1.const 修飾常量:
const修飾的變量不可變屡江,只能在初始化時(shí)賦值。以下兩種寫法效果是一樣的:
const int a = 10;
int const a = 10;
2.修飾指針
const在*左側(cè):修飾指針指向的變量為常量
int a = 10;
const int* p = ?&a;
int const* p = ?&a;
const在*右側(cè):修飾指針的值不能變祖今,即指針本身為常量
int* const p = &a;
3.修飾引用
不能通過引用修改變量的值
int a = 10;
const int& b = a;
int& const b = a; ? ? ? ?//修改b將無法修改a的值
3. 修飾類成員變量
用const修飾的類成員變量,只能在類的構(gòu)造函數(shù)初始化列表中賦值,不能在類構(gòu)造函數(shù)體內(nèi)賦值击你。
class A
{public:
? ? A(int x) : a(x) // 正確 ?{
? ? ? ? //a = x;? ? // 錯(cuò)誤
????}
private:
? ? const int a;
};
4.修飾類成員函數(shù)
用const修飾的類成員函數(shù)玉组,在該函數(shù)體內(nèi)不能改變?cè)擃悓?duì)象的任何成員變量, 也不能調(diào)用類中任何非const成員函數(shù)。
class A
{public:
? ? int& getValue() const{
? ? ? ? // a = 10;? ? // 錯(cuò)誤
????????return a;
? ? }
private:
? ? int a;// 非const成員變量
};
5.修飾類對(duì)象
用const修飾的類對(duì)象丁侄,該對(duì)象內(nèi)的任何成員變量都不能被修改惯雳。
只能調(diào)用對(duì)象的const成員函數(shù),不能調(diào)用非const成員函數(shù)鸿摇。
class A
{
public:
? ? void funcA() {}
? ? void funcB() const {}
};
int main
{
? ? const A a;
? ? a.funcB();? ? // 可以
????a.funcA();// 錯(cuò)誤
????constA* b =new A();
? ? b->funcB();// 可以
????b->funcA();// 錯(cuò)誤
}