pointer与const
|
|
STL迭代器作用类似于T*指针
|
|
class中的const和static
const 数据成员
- 对于类的某个对象是不可变常量。
- 超出其作用域后会释放空间。
- C++11之前 必须在构造函数初始化列表中初始化;
C++11开始 除了static、非 const 类型,其他类型的数据成员都能在定义时初始化。
但不论哪种方式,const 数据成员必须在对象构造函数体之前初始化!
static 数据成员
- 属于类,不依赖于对象,不占用对象的内存空间,该类的所有对象共享这个成员。
- 全局作用域,不会释放空间。
- 必须在全局范围进行初始化,使用 “类型名 类名::变量名 = xxx” 的形式,不能有 static 限定符。
- 对于 static const 成员或 const static 成员,既可以在定义时初始化,也可以在类外初始化(需要 const,不能有 static),但不能在构造函数初始化列表中初始化。
const 成员函数
- 可以访问所有数据成员。
- 不能改变数据成员的值,可以改变 static 数据成员的值(static 成员属于类)。
mutable 关键字可以释放掉 non-static 数据成员的 bitwise constness 约束,const 成员函数可以修改 mutable 成员的值,例如可将一个记录函数调用次数的计数器变量修饰为 mutable。 - 两个成员函数如果只是常量性不同,可以被重载。
非const对象会调用非const版本的函数重载,const对象会调用const版本的函数重载。
static 成员函数
- 只能访问 static 数据成员或者 static 成员函数。
const对象
- const 对象只能调用 const 成员函数(只能做 const 成员函数能做的事)。