1.const 修饰常量:
const修饰的变量不可变,只能在初始化时赋值。以下两种写法效果是一样的:
const int a = 10;
int const a = 10;
2.修饰指针
const在*左侧:修饰指针指向的变量为常量
int a = 10;
const int* p = &a;
int const* p = &a;
const在*右侧:修饰指针的值不能变,即指针本身为常量
int* const p = &a;
3.修饰引用
不能通过引用修改变量的值
int a = 10;
const int& b = a;
int& const b = a; //修改b将无法修改a的值
3. 修饰类成员变量
用const修饰的类成员变量,只能在类的构造函数初始化列表中赋值,不能在类构造函数体内赋值。
class A
{public:
A(int x) : a(x) // 正确 {
//a = x; // 错误
}
private:
const int a;
};
4.修饰类成员函数
用const修饰的类成员函数,在该函数体内不能改变该类对象的任何成员变量, 也不能调用类中任何非const成员函数。
class A
{public:
int& getValue() const{
// a = 10; // 错误
return a;
}
private:
int a;// 非const成员变量
};
5.修饰类对象
用const修饰的类对象,该对象内的任何成员变量都不能被修改。
只能调用对象的const成员函数,不能调用非const成员函数。
class A
{
public:
void funcA() {}
void funcB() const {}
};
int main
{
const A a;
a.funcB(); // 可以
a.funcA();// 错误
constA* b =new A();
b->funcB();// 可以
b->funcA();// 错误
}
网友评论