다음 문제를 해결하는 방법에 대해 매우 혼란스러워합니다.연산자 = 하위 클래스
class Foo
{
public:
// this only copies the data
Foo& operator=(const Foo& foo);
// do something that computes a new Foo from *this
Foo modifiedFoo();
//..
private:
std::vector<int> data;
}
class Bar: public Foo
{
public:
void someNewMethod();
//..
// no new data
}
상속 이제 경우 bar1 = bar2
의 연산자 = 옳은 일을한다는 것을 보장 :
Bar
및
Foo
은 기본적으로 동일, 그래서 모두
Foo foo;
Bar bar;
foo = bar; // this ...
bar = foo; // .. and this;
을 쓸 수보다 구체적으로
bar = foo.modifiedFoo();
[ 편집하고 싶습니다 : 그리고 BTW,이 작동하지 않습니다 중 하나를 분명 ...
bar1 = bar2.modifiedFoo();
]
가 나는 Bar
다른 Bar& operator=(const Foo & foo)
을 추가하는 등 쉬운 것이라고 생각하지만, 어떻게 든이는 무시된다 (그리고 나는 점점 더 많은 클래스를 파생하는 경우? 무엇을, 어쨌든이 마음에 들지)
가 그래서입니다 이것에 대해 갈 올바른 방법 ??
감사합니다. 그리고 이것이 전에 물어 보면 미안합니다.
없음 복사 생성자? 대입 연산자가 있다면 그 중 하나가 필요하다고 생각했습니다. – John
@ 존 : 아니, 그렇지 않으면, 하나가 아닌 다른 것을 제공 할 이유는 거의 없지만. 복사 구성 및 스왑의 관점에서 복사 할당을 구현하는 것은 쉽지만 그 반대의 경우는 아닙니다. –
@ 존 : 거기에 // ...;) – bbtrb