這是來自Calling constructor in return statement的後續問題。NRVO病例中常量返回類型的相關性
這是一個運算符在類中超載的樂趣。
const Integer operator+(const Integer& IntObject)
{
cout << "Data : " << this->data << endl;
return Integer(this->data + IntObject.data);
}
const在返回類型中對這些函數的相關性是什麼?
int main()
{
Integer A(1); //Create 2 object of class Integer
Integer B(2);
const Integer C = A + B; //This will work
Integer D = A + B; //This will also work
fun(A + B); //Will work
}
void fun(Integer F) {}
這是一種情況,由於NRVO,在返回步驟中不會創建臨時對象。要返回的對象直接構造在被調用者的地址上。
從所有的答案,我得到的const返回類型是/在這種情況下,用於防止修改在'return'期間創建的臨時對象(如果有的話)的行動。而根據C++ 11,我應該避免在這種情況下使用const返回類型? – hackrock
@rocky如果你想防止在臨時對象上調用non-const,那麼你並沒有真正的選擇,這意味着如果適用的話,你不會從移動語義中受益。 – juanchopanza