#include <iostream>
using namespace std;
class A
{
int x;
public:
A(int a)
{
x = a;
cout << "CTOR CALLED";
}
A(A &t)
{
cout << "COPY CTOR CALLED";
}
void display()
{
cout << "Random stuff";
}
A operator = (A &d)
{
d.x = x;
cout << "Assignment operator called";
return *this;
}
};
int main()
{
A a(3), b(4);
a = b;
return 0;
}
Выход этого кода:Почему здесь вызывается конструктор копирования?
CTOR НАЗВАЛ
CTOR НАЗВАЛ
Оператор присваивания называется
COPY CTOR НАЗВАЛ
Когда я использовал часы в визуальной студии он показал что значение x
в a
было изменено еще до вызова перегруженного оператора присваивания.
Итак, почему конструктор копирования даже называется здесь?
Просто примечание параметр должен быть константными исми 'и оператором = (Константным & d) {...}' То же самый для конструктора копирования. –
И вы хотите скопировать значение 'x' другим способом. То есть 'x = d.x;' –