#include <iostream>
using namespace std;
class myclass {
public:
myclass();
myclass(const myclass &o);
myclass f();
};
myclass:: myclass(){
cout<<"Constructing normally"<<endl;
};
myclass:: myclass(const myclass &o){
cout<<"Constructing copy"<<endl;
};
myclass myclass::f(){
myclass temp;
return temp;
};
int main(){
myclass obj;
obj = obj.f();
return 0;
}
Я нашел этот пример в книге, которая показывает, что выход из программы должен быть:Когда конструктор копирования начинает работать?
Constructing normally
Constructing normally
Constructing copy
Но когда я скомпилировать его в моем компиляторе он показывает только выход написанный ниже
Constructing normally
Constructing normally
Что на самом деле происходит внутри?
это означает, что ваш компилятор оптимизировал копия далеко на второй строке 'OBJ = obj.f();' – EdChum
я не мог получить его :(Можете ли вы разработать его – IAmBlake
Читайте о возвращаемом значении.? оптимизация и копирование текста (ваша книга может быть старой). –