const放在函式前後的區別

2021-08-28 11:55:09 字數 918 閱讀 9126

int b = 500;

1、const int * a = & b;

2、int const * a = & b;

3、int * const a = & b;

4、const int * const a = & b;

對於1和2

const 放在*左側,就是用來修飾指標所指向的變數,即指標指向的是常量。

若a是倉庫管理員,b是倉庫。即倉庫中的貨物(*a)不允許改變。但是可修改指標指向或b的值來改變*a。

對於3const放在*的右側,表示管理的倉庫不可改變,只能是那乙個,但是倉庫中的貨物(*a)可以改變。同時定義時必須初始化。

對於4表示指標本身和指向的內容均為常量。

1、int gety() const;

2、const int * getposition();

對於1該函式為唯讀函式,不允許修改其中的資料成員的值。

對於2修飾的是返回值,表示返回的是指標所指向值是常量。

const物件只能呼叫const成員函式;const物件的值不能被修改,在const成員函式中修改const物件資料成員的值是語法錯誤;在const函式中呼叫非const成員函式是語法錯誤。

在乙個類的函式後面加上const後,就表明這個函式是不能改變類的成員變數。如果在編寫const成員函式時,不慎修改了資料成員,或者呼叫了其它非const成員函式,編譯器將指出錯誤,這無疑會提高程式的健壯性。

以下程式中,類stack的成員函式getcount僅用於計數,從邏輯上講getcount應當為const函式。編譯器將指出getcount函式中的錯誤。

class stack

;int stack::getcount(void)  const

const成員函式的宣告看起來怪怪的:const關鍵字只能放在函式宣告的尾部,大概是因為其它地方都已經被占用了。

C 函式前後加const的區別

1 函式前後const 函式前const 普通函式或成員函式 非靜態成員函式 前均可加const修飾,表示函式的返回值為const,不可修改。格式為 const returntype functionname param list 函式後加const 只有類的非靜態成員函式後可以加const修飾,表...

函式名前後的const

一 概念 當const在函式名前面的時候修飾的是函式返回值,在函式名後面表示是常成員函式,該函式不能修改物件內的任何成員,只能發生讀操作,不能發生寫操作。二 原理 我們都知道在呼叫成員函式的時候編譯器會將物件自身的位址作為隱藏引數傳遞給函式,在const成員函式中,既不能改變this所指向的物件,也...

const在函式前後的意義

1 只允許在類的非靜態成員函式後面加const 加到非成員函式 或 靜態成員後面會產生編譯錯 2 後面加的const其實是對隱含傳入引數this指向類物件的修飾,即 this 是被const修飾,那this所指向的類物件的成員都是不允許被修改的 備註 有人認為const修飾的是this指標,那麼不能...