#include <iostream>
using namespace std;
class Base{
int a;
public:
Base(int b):a(b){cout<<"0"<<endl;}
Base(Base const &b):a(b.a){cout<<"1"<<endl;}
private:
Base(Base &b);
};
Base fun(){
return 2;//
}
int main(){
fun();
return 0;
}
Я думаю, он будет ссылаться на базу (INT б) построить временный объект, а затем использовать Base (База константный & б), так будет COUT «0» и «1», но, как вопрос, что это только cout «0», почему?Copy конструктор не вызывается в то время как он должен быть
Вы слышали о «Оптимизации стоимости»? –
Кроме [RVO] (https://en.wikipedia.org/wiki/Return_value_optimization), вы также можете прочитать о [* copy elision *] (https://en.wikipedia.org/wiki/Copy_elision). –