我正在爲CS類創建一個任務,它使用const,我對於何時使用它們感到困惑。int const函數(參數),int函數(const參數)和int函數(參數)const之間的區別是什麼?
這3個功能有什麼區別?
int const function(parameters)
int function(const parameters)
int function(parameters) const
在此先感謝!
我正在爲CS類創建一個任務,它使用const,我對於何時使用它們感到困惑。int const函數(參數),int函數(const參數)和int函數(參數)const之間的區別是什麼?
這3個功能有什麼區別?
int const function(parameters)
int function(const parameters)
int function(parameters) const
在此先感謝!
考慮到你在談論c++
:
const int function(parameters) // instead of your int const function(parameters)
將返回常到int
int function(const parameters)
的參數將被視爲方法,這意味着他們將不會改變內是恆定的。
int function(parameters) const
該功能不會改變任何類變量(如果該構件是不可變)
int const function(parameters)
const
是多餘的。聲明一個簡單的類型,如int
作爲const
返回值沒有用,儘管它可能有助於使代碼更加自我記錄。如果返回類型是引用或指針,那麼故事會改變。
int function(const parameters)
的parameters
傳遞給function
是const
,因此不能被修改。
int function(parameters) const
function
是方法不修改任何成員變量的在其上調用它的對象實例。
爲了擴展第一種情況,Effective C++(第三版)建議這樣做,以防止意外地分配給臨時表。但是,從C++!1開始,這種模式可以防止從臨時移動(不是'int'的問題,但可能是類的類型),所以不推薦使用。 – BoBTFish 2015-02-09 07:36:20
Minor nitpick:一個const成員函數允許你修改可變數據成員,並且它不允許你調用非const成員函數,即使這些函數不修改任何不可變成員。 – juanchopanza 2015-02-09 08:28:30
如果對象本身是const的,那麼你將無法通過它調用任何非const和非靜態函數。 – user3528438 2015-02-09 12:55:45
參見http://stackoverflow.com/questions/16449889/why-using-the-const-keyword-before -of-after-method-or-function-name – juanchopanza 2015-02-09 07:22:03