- const出现在*左边,表示被指物是常量。
- const出现在*右边,表示指针自身是常量。
const数据成员
必须使用成员初始化列表进行初始化。
class A{
public:
A();
~A();
private:
const int val;
};
A::A()
:val(0) //初始化列表
{
}
const成员函数
不能修改数据成员
class Foo{
public:
int bar()const {}
};
使用const提高函数的健壮性
- 以pass-by-reference-to-const替换pass-by-value(避免调用拷贝构造函数)
- 控制使用指针和引用传递的实参被意外修改
class Person{
};
void foo(Person person); //效率低
void bar(const Person &person); //效率高