class test{
public:
int data;
test(const test& ){cout<<"INSIDE COPY CON "<<endl;}
test(int val = 0) : data(val){ cout<<"INSIDE CON "<<endl; }
test testfun(const test& obj)
{
cout<<"data : "<<data<<endl;
//test test3(this->data + obj.data);
//cout<<"test3 :"<<test3.data<<endl;
//return test3; //This will work only if return type is changed to const ref
return test(data + obj.data);
}
};
int main()
{
test testO1(1);
test testO2(2);
test testO3 = testO1.testfun(testO2);
cout<<testO3.data<<endl;
getchar();
}
ВЫВОД:
INSIDE CON
INSIDE CON
data : 1
INSIDE CON
3
Что происходит, когда конструктор вызывается в операторе return? Поскольку я могу вернуться по значению, и это работает, я думаю, что это не временное местоположение. ИЛИ он создает объект как временный и использует конструктор копирования для копирования значений, в этом случае почему печать внутри конструктора копирования не печатается.