歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++中const限定符的幾種常見用法

C++中const限定符的幾種常見用法

日期:2017/3/1 10:05:46   编辑:Linux編程

const對象
將一個對象定義為不可更改的對象,稱為const對象。
例:const int a = 512 ;
注解:因為const對象在定義後就不能修改,所以定義時必須初始化。

const引用
C++ Primer中寫道“const引用是指向const對象的引用”。我認為至少不夠精確,這句話意在強調非const引用是指向const對象是錯誤的,但是沒有說明const引用也可以指向一般的對象。我給出的定義是:const引用是這樣的一種引用,它只能讀取指向對象的值,但不能修改其指向對象的值。
例:const int a = 512;
int b = 1024;
const int &c = a; //正確!
const int &d = b; //正確!
int &e = a; //錯誤!

指向const對象的指針
這是C++Primer對這種指針的稱呼。這種用法跟上文的const引用是類似的。同樣,把這種指針稱作“指向const對象的指針”是不夠精確的,因為它也可以指向非const對象,只不過這種指針“自以為指向const對象”,即,這種指針只能讀取指向對象的值,但不能修改其指向對象的值,無論這個對象是不是const對象。
例:const int a = 512;
int b = 1024;
const int *c = &a; //正確!
c = &b; //正確!

int *d = &a; //錯誤!

const指針

這也是C++Primer對這種指針的稱呼。這種說法容易與“const引用”混淆,事實上表達的意義完全不同。const指針的特點是——本身的值不能修改。任何企圖給const指針賦值的行為(即使給該指針賦本身的值)都會導致編譯時的錯誤。

例: int a = 0;

int *const b = &a;

b = c; //c是另外一個指針,錯誤!

b = b; //賦本身的值,錯誤!

指向const對象的const指針

別被繞暈了,其實就是上述兩種指針的結合體。這種指針,既不能修改本身的值,也不能修改其所指向對象的值。

例:const int a = 0;

const int *const b = &a;

const成員函數

又被稱作常量成員函數。這種成員函數只能讀取而不能修改其所屬對象的數據成員。

例: class A{

public:

bool IsSame(const A &a)const;

};

其它相關:

const_iterator

每種容器類型中都定義了const_iterator類型,這種類型只能用於讀取容器內的元素,但不能改變其值。

例:vector<string> text;

for(vector<string>::const_iterator iter = text.begin(); iter! = text.end(); ++iter)

{函數體}

暫時就寫這麼多,如有新發現會持續更新。

Copyright © Linux教程網 All Rights Reserved