程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++-靜態成員函數為什麼不能聲明成 const 的?

c++-靜態成員函數為什麼不能聲明成 const 的?

編輯:編程解疑
靜態成員函數為什麼不能聲明成 const 的?

《C++ Primer》第五版,中文版。269 頁。
類似的,靜態成員函數也不與任何對象綁定在一起,它們不包含 this 指針。作為結果,靜態成員不能聲明成 const 的,而且我們也不能在 static 函數體內使用this 指針。

最佳回答:


因為static成員不是任何對象的組成部分,所以static成員不能被聲明為const,畢竟將成員聲明為const就是承諾不會修改該函數所屬對象.
const用於後置修飾函數時只用於限定成員函數,意味著將被修飾的成員函數的隱式參數——this指針由原來的Class* const變為const Class* const類型,使得在該成員函數內不能修改成員屬性,除非該屬性被mutable修飾。
而static類函數並沒有隱式的this指針,因為其本質上還是屬於C函數——滿足__cdecl調用協定。
而成員函數被稱為__thiscall,帶有隱式的this指針參數。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved