Я хотел бы знать, допустимо ли копирование объекта следующим образом при копировании отдельных элементов.Копирование объекта в C++
#include <iostream>
using namespace std;
class abc{
public:
abc(int a = 10, int b = 5);
abc(const abc &obj, int b = 10);
int ret_x() { return x; }
int ret_y() { return y; }
private:
int x;
int y;
};
abc::abc(int a, int b)
: x(a),
y(b)
{
}
abc::abc(const abc &obj, int b)
{
if (this != &obj) {
*this = obj; -----> Copying the object
}
y = b;
}
int main()
{
abc a1;
cout << "A1 values: " << a1.ret_x() << "\t" << a1.ret_y() << endl;
abc a2(a1, 20);
cout << "A2 values: " << a2.ret_x() << "\t" << a2.ret_y() << endl;
return 0;
}
Edit:
использования:
Вопрос заключается в том, что объект a1 автоматически генерируется и, следовательно, все вновь введенные члены в классе не может быть обновлен. Я мог бы предоставить функцию члена, чтобы обновить новых членов, конечно, но хотел изучить этот вариант.
Код работает нормально, но является ли метод правильным?
Спасибо!
Вы строительство нового объекта - если бы это имеет смысл для нового объекта, чтобы создать из себя? – chris
Я так не вижу конструктора. Копировать конструктор является копией из других. Но вы включаете свой специальный intialize одной переменной-члена, этот код нарушает здравый смысл конструктора копирования. Почему начальный конструктор b 5, но исходный конструктор исходного кода b 0? –
@TongxuanLiu: Добавленный случай использования – Maddy