1. 命名空间:避免命名冲突 使用方式: using namepace A; A::a;
2. static总结:
修饰变量: 使局部变量的内存在全局区,(延长局部变量的生命周期)
使全局变量,不能在另外一个文件中使用extern 声明访问(缩小全局变量的作用范围)
修饰函数: 使函数,不能在另外一个文件中使用extern 声明访问
静态函数与变量: 静态函数中的变量,必须是静态的
静态函数中的函数,必须是静态的
c++中静态函数,静态变量属于类,可通过类名访问,也可通过对象访问
类中,静态变量的初始化必须放在类外
注意:const与static同时修饰的变量:在类外进行初始化
3,常对象,常函数:const
常对象调用常函数, (this)
非常对象调用 非常函数,常函数
为什么常对象,不能调用非 常函数? (非常函数的this指针)
static 不能修饰 常函数 -- const 不能修饰静态函数
非常对象,优先调用非常函数
4常函数既可以被非常对象调用,又可以被常对象调用,那是不是全部都写常函数可保万无一失? 都写常函数,意味着,对象的属性就不可以自由改变了,
常函数中改变对象的属性值的方法,
1,mutable修饰成员变量
2,const_cast<>(this)去除常属性
2 当返回类型 是一个非常对象的引用的时候,只能用 非常函数了
常函数既可以被非常函数调用,又可以被常函数调用
常函数调用非常函数,会出错 (参数 const this -> this 会出错)
4 const 想关见解:
c语言中:使变量只读,不可修改(修饰指针,指针变量,一般变量)
可修饰参数,修饰返回值
c++语言中:除了c中的特点,
修饰对象
使函数变成常函数(使this变成const)
const修饰参数的目地:
1,使参数只读,不可修改(编译器提示性的限制)
2,支持常对象作为参数(常对象不可隐式转成 非常对象)
常对象做参数:传入的实参对象,既可以是常对象,有可以是非 常对象(隐式转换)
非 常对象做参数:传入的实参对象,只能是非 常对象(则不支持常对象作实参)
const可以优化效率
const int a=10;