#include <iostream>
using namespace std;
class X
{
public:
X() { cout<<"default constructor"<<endl; }
X(const X&) { cout<<"copy constructor"<<endl; }
};
X test(X a)
{
X y = a;
return y;
}
int main()
{
X obj;
X obj1 = test(obj);
return 0;
}
Выход:конструктор копирования называется неправильно
default constructor
copy constructor
copy constructor
Я скомпилировал с помощью MinGW компилятор.
Но, я думаю, что результат неправильный. Конструктор копирования вызывается, когда объект передается по значению, возвращает значение или явно копируется. В вышеуказанной программе "copy constructor"
необходимо называть 4 раза.
test(obj)
называется, чтобы скопироватьobj
вa
X y = a
называется, явно скопирован.return y
называется,y
копируется во временный объект, пусть это будетtemp
X obj1 = temp
, явно скопирована.
Пожалуйста, исправьте меня. Укажите также свое обоснование.
Пожалуйста, добавьте метку языка, если это необходимо. Вы также получите автоматическую подсветку синтаксиса;) – dyp