c++入門之——const在函數名前面和函數后面的區別


1 class Test(){
2 public:
3     Test(){}
4     const int foo(int a);
5     const int foo(int a) const;
6 };

一、概念

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

 

二、原理:

我們都知道在調用成員函數的時候編譯器會將對象自身的地址作為隱藏參數傳遞給函數,在const成員函數中,既不能改變this所指向的對象,也不能改變this所保存的地址,this的類型是一個指向const類型對象的const指針。

 

三、Overload時const的作用:

繼續使用上面的test類:

1 int main(int argc, _TCHAR* argv[])
2 {
3     Test obj;
4     const Test obj1;
5     obj.foo(3);//使用非const函數
6     obj1.foo(3);//使用const函數
7 }

在VS中如果對象不是const,則調用非const的函數。

本文轉載自:

https://blog.csdn.net/lichen18848950451/article/details/64123104


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM