c++
命名空间
命名空间:程序员自己设定的作用域,里面的是全局实体,可以把全局实体分隔开
namespace 是定义命名空间所必须写的关键字
命名空间定义只是一个大括号,没有分号
name space Aha
{
a=3;
}
使用方法
- using namespace Aha
- using Aha::a;
- Aha::a
记住:如果命名空间里面嵌套了命名空间,要使用嵌套命名空间里面的内容必须作用到嵌套的命名空间里面,而不能直接通过外部的那个命名空间来调用。
引用
引用:简单的理解就是一个变量的别名,对引用操作就是对变量本身操作(&).
例如:int a; int & b=a;
- b为a的引用
- &在这里不是地址运算,标识符的作用
- 引用必须初始化
- 引用一旦初始化不可改变指向,指针可以改变指向
- 引用是不占存储单元的,系统也不分配
- 不能建立数组的引用,因为数组是由若干元素组成的集合
const
修饰成员变量的时候
int b=3;
- const int a =3 常量不可改变
- const int *a=&b 指向的值不可改变,但是指向可以改变
- int * const a=&b 指向的值可以改变,但是指向不能变
- const int * const a=&b 指向和值都不可以改变
const修饰函数参数
传递过来的参数在函数内不可以改变
const修饰成员函数
- const修饰的成员函数不能修改任何的成员变量(mutable修饰的变量除外)void MutNum (int x) const{};
- const成员函数内部不可调用非congst成员函数,因为调用会修改成员变量
const修饰函数返回值
返回值是什么类型,那么要获取返回值也必须赋予给相应的类型来获取值。
例如
const int * malloc_A(){ //指向的为常量,指针可以改变指向
int *a=new int(2);
return a;
}
int main()
{
const int *a = malloc_A();
///int *b = mallocA(); ///编译错误,也要const int *b来接收数据
return 0;
}
函数的重载
函数的重载:重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数。
- 参数不同
- 类型不同
- 顺序不同
返回值不影响函数重载
默认参数:在定义的时候直接赋值int Print_num(int a,int b=10),从右往左的
占位参数:占位参数只有参数类型声明,而没有参数名声明,一般不影响函数体内部,int Print_num(int a,int b)。
小心使用:
int Print_num(int a,int b,int c=10);
int Print_num(int a,int b);
int Print_num(10,12);会报错,因为无法识别到底调用哪一个函数。