c++ const用法




為什麼在方法或函數名之前和之後使用const關鍵字? (3)

const (和volatile )限定符綁定到左側 。 這意味著const看到const ,它都會應用於它左側的標記。 但是有一個例外; 如果const的左邊沒有任何內容,那麼它就會綁定到右邊。 記住這些規則很重要。

在你的例子中,第一個const在它的左邊沒有任何東西,所以它綁定到右邊,即T 這意味著返回類型是對const T的引用。

第二個const確實有左邊的東西; 功能data() 。 這意味著const將綁定到函數,使其成為const函數。

最後,我們有一個const函數返回對const T的引用

我的應用程序中有以下代碼。 為什麼我們使用const關鍵字和返回類型以及方法名稱之後?

const T& data() const { return data_; }

第一個const表示函數返回const T引用。

第二個說該方法不會改變對象的狀態。 即方法不會更改任何成員變量。


const T& data() const { return data_; }
^^^^^

意味著它將返回一個對Tconst引用(這裡是data_

Class c;
T& t = c.data()             // Not allowed.
const T& tc = c.data()      // OK.
const T& data() const { return data_; }
                ^^^^^

表示該函數不會修改該類的任何成員變量(除非該成員是mutable )。

void Class::data() const {
   this->data_ = ...;  // is not allowed here since data() is const (unless 'data_' is mutable)
   this->anything = ... // Not allowed unless the thing is 'mutable'
}




c++