Linux程式設計const使用詳細介紹

2021-09-22 21:45:58 字數 1471 閱讀 5970

一、const基礎

如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況:

int

b = 500; 

const int

* a = &b; [1] 

intconst *a = &b; [2] 

int* const a = &b; [3] 

const int

* const a = &b; [4] 

如果你能區分出上述四種情況,那麼,恭喜你,你已經邁出了可喜的一步。不知道,也沒關係,我們可以參考《effective c++》item21上的做法,如果const位於星號的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;如果const位於星號的右側,const就是修飾指標本身,即指標本身是常量。因此,[1]和[2]的情況相同,都是指標所指向的內容為常量(const放在變數宣告符的位置無關),這種情況下不允許對內容進行更改操作,如不能*a = 3 ;[3]為指標本身是常量,而指標所指向的內容不是常量,這種情況下不能對指標本身進行更改操作,如a++是錯誤的;[4]為指標本身和指向的內容均為常量。

另外const 的一些強大的功能在於它在函式宣告中的應用。在乙個函式宣告中,const 可以修飾函式的返回值,或某個引數;對於成員函式,還可以修飾是整個函式。有如下幾種情況,以下會逐漸的說明用法:

a& operator=(const a& a); 

void fun0(const a* a ); 

void fun1( ) const; // fun1( ) 為類成員函式 

const a fun2( ); 

二 const的初始化

先看一下const變數初始化的情況

1) 非指標const常量初始化的情況:

a b; 

const a a = b; 

2) 指標(引用)const常量初始化的情況:

a* d = new a(); 

const a* c = d; 

或者:

const a* c = new a(); 

引用:

a f; 

const a& e = f; // 這樣作e只能訪問宣告為const的函式,而不能訪問一般的成員函式; 

[思考1]: 以下的這種賦值方法正確嗎?

const a* c=new a(); 

a* e = c; 

[思考2]: 以下的這種賦值方法正確嗎?

a* const c = new a(); 

a* b = c;  

原文發布時間為:

2017-10-30 佚名

Linux系列 linux tar命令使用詳解

linux下最常用的打包程式就是tar了,使用tar程式打出來的包我們常稱為tar包,tar包檔案的命令通常都是以.tar結尾的。生成tar包後,就可以用其它的程式來進行壓縮了,所以首先就來講講tar命令的基本用法 tar命令的選項有很多 用man tar可以檢視到 但常用的就那麼幾個選項,下面來舉...

程式語言 const

問題 如果函式需要傳入乙個指標,面試官可能會問是否需要為該指標加上const,把const加在指標不同位置有什麼區別 如果寫的函式需要傳入的引數是乙個複雜型別的例項,面試官可能會問傳入值引數或者引用引數有什麼區別,什麼時候需要為傳入的引用引數加上const?1 const是用來宣告乙個常量的,當你不...

vector,deque,list技術程式設計詳解

vector,deque,list技術程式設計詳解 2008 02 10 21 16 vector,deque,list 技術程式設計詳解 1 bool empty const 判斷序列是否為空 2 begin,end const iterator begin const iterator begi...