개별 요소를 복사 할 때 다음과 같은 방식으로 개체를 복사 할 수 있는지 알고 싶습니다.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;
}
편집 :
사용 사례 :
문제는 그 객체의 A1이 자동 생성 따라서 수업 시간에 새로 도입 구성원이 업데이트 할 수 없습니다입니다. 새 멤버를 업데이트하는 멤버 함수를 제공 할 수는 있지만이 옵션을 탐색하려고했습니다.
코드가 제대로 작동하지만 올바른 방법입니까?
감사합니다.
당신은 새로운 객체를 구성하고 - 새로운 객체가 자체에서 생성 할 때 의미가 만들 것? – chris
나는 이와 같은 생성자를 보지 못했다. 복사 생성자는 다른 사람의 복사입니다. 그러나 당신은 하나의 멤버 변수에 대한 특별한 초기화를 포함합니다,이 코드는 복사 생성자의 상식을 깨뜨립니다. 왜 생성자는 초기 b 5가 아니라 생성자의 초기 b 0을 복사합니까? –
@TongxuanLiu : 합계 사례 – Maddy