C 中const在函式名前面和函式後面的區別

2021-08-18 02:34:23 字數 954 閱讀 9894

看一道題先:

#include using namespace std;

struct a

// 在下面補充完struct

const a* getpointer() const

};int main()

一、概念

當const在函式名前面的時候修飾的是函式返回值,在函式名後面表示是常成員函式,該函式不能修改物件內的任何成員,只能發生讀操作,不能發生寫操作。

二、原理:

我們都知道在呼叫成員函式的時候編譯器會將物件自身的位址作為隱藏引數傳遞給函式,在const成員函式中,既不能改變this所指向的物件,也不能改變this所儲存的位址,

this的型別是乙個指向const型別物件的const指標。

具體示例:

乙個函式名字後有const,這個函式必定是成員函式,也就是說普通函式後面不能有const修飾,如:int print( ) const 這個函式必定為成員函式,即在類裡面定義的函式。

在乙個類裡定義了乙個const成員函式後,則此函式不能修改類中的成員變數,如果定義了乙個類的const物件(非const物件可以呼叫const成員函式和非const成員hanshu ),它只能呼叫類中的const成員函式,如:

class text          //錯誤,有const修飾,不能修改k的值,

private:

int k;

};const text a;

int main()

// void print() const {}  和 void print() {}   是過載函式,假如物件為const,則呼叫void print () const成員函式,如果為非const,則呼叫void print() ;

class text;

const text a;      

int main()

C 中const在函式名前面和函式後面的區別

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

C 中const在函式名前面和函式後面的區別

1 2 3 4 5 6 classtest constintfoo inta constintfoo inta const 一 概念 當const在函式名前面的時候修飾的是函式返回值,在函式名後面表示是常成員函式,該函式不能修改物件內的任何成員,只能發生讀操作,不能發生寫操作。二 原理 我們都知道在...

C 中const在函式名前面和函式後面的區別

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