先看看這個函數:
const Class & function(const Class & c) const;
這其中有三處使用了 const 修飾符,許多同學只是知道 const 是用來修飾變量或者函數的修飾符,使被修飾的對象不能被改變,但不是很清楚 const 在不同位置表示的意思。下面依次介紹上面這個函數中三處 const 的具體意思。
函數的返回值爲 const引用(return c),所以函數聲明與函數定義保持一致,使用 const引用。
函數不修改此引用參數。
在成員函數後面加 const 表明這個成員函數爲 const成員函數。在非成員函數中,如果我們不希望改變函數的特徵標,可以將函數參數聲明爲 const 引用,或者指向 const 的指針來解決。但是如果是類的成員函數,它所使用的對象是由方法調用隱式地接受的,故特徵標中沒有該對象,所以之前的方法失效。C++中有一種新的語法——在函數的括號後面加上 const,標誌這是一個 const成員函數,即:該方法不修改調用的對象。這裏有個隱含的意思是:const
限定符將this指針限定爲 const,這樣將不能使用this來修改對象的值。
就像應該儘可能的將 const引用和指針用作函數形參一樣,只要類方法不修改調用的對象,就應將其聲明爲 const。