这是Calling constructor in return statement的后续问题。
这是一个类中的运算符重载乐趣。
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 在返回步骤期间未创建临时对象的情况。要返回的对象是直接在被调用者的地址上构造的。