const成员:被const修饰的成员变量、非静态成员函数
const修饰成员变量
- 1.必须初始化(类内部初始化),可以在声明的时候直接初始化赋值
- 2.非static的const成员变量还可以在初始化列表中初始化
class Car { public: static int m_price; // 声明的时候直接初始化赋值 static const int msc_wheelsCount = 4; // 初始化列表中初始化 Car() :m_price(0) { } };
const修饰成员函数(非静态)
- const关键字写在参数列表后面,函数的声明和实现都必须带const
void test() const { cout << "test() const" << endl; }
- 内部不能修改非static成员变量
void test1() const { // 会报错
// this->m_price = 10;
}
- 内部只能调用const成员函数、static成员函数
- 非const成员函数可以调用const成员函数
- const成员函数和非const成员函数构成重载
void test() {
cout << "test()" << endl;
}
void test() const {
cout << "test() const" << endl;
}
- 非const对象(指针)优先调用非const成员函数
- const对象(指针)只能调用const成员函数、static成员函数
int main() {
Car car;
car.test();
Car *p = new Car();
p->test();
const Car car2;
car2.test();
const Car *p2 = new Car();
p2->test();
getchar();
return 0;
}