C++ : 연산자 오버로딩(6) - 상속 구조에서의 대입 연산자
참고 : 열혈강의 C++ 프로그래밍 책
#include <iostream> using namespace std; class Parent { private: int num1, num2; public: Parent(int n1 = 0, int n2 =0) : num1(n1), num2(n2) { } void ShowData() { cout << num1 << ", " << num2 << endl; } Parent& operator=(const Parent& ref) { cout << "Parent& operator=()" << endl; num1 = ref.num1; num2 = ref.num2; return *this; } }; class Child : public Parent { private: int num3, num4; public: Child(int n1, int n2, int n3, int n4) : Parent(n1, n2), num3(n3), num4(n4) { } void ShowData() { Parent::ShowData(); cout << num3 << ", " << num4 << endl; } // 유도 클래스의 대입 연산자 정의에서 기초 클래스의 대입 연산자를 호출하지 않으면 // 기촐 클래스의 대입 연산자는 호출되지 않는다. Child& operator=(const Child& ref) { cout << "Second& operator=()" << endl; // 호출해서 멤버대 멤버 복사를 하기 위함 Parent::operator=(ref); num3 = ref.num3; num4 = ref.num4; return *this; } }; // 테스트 void Operator6() { Child ssrc(11, 22, 33, 44); Child scpy(0, 0, 0, 0); scpy = ssrc; scpy.ShowData(); }
댓글
댓글 쓰기