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

2021-06-27 09:39:17 字數 920 閱讀 1836

1

2

3

4

5

6

classtest()

constintfoo(inta);

constintfoo(inta)const;

};

一、概念

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

二、原理:

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

三、overload時const的作用:

繼續使用上面的test類:?

1

2

3

4

5

6

7

intmain(intargc, _tchar* argv)

在vs中如果物件不是const,則呼叫非const的函式。

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

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

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

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

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

class test const int foo int a const int foo int a const 一 概念 當const在函式名前面的時候修飾的是函式返回值,在函式名後面表示是常成員函式,該函式不能修改物件內的任何成員,只能發生讀操作,不能發生寫操作。二 原理 我們都知道在呼叫成員函...