Food가 부모 클래스이고
Soup Juice 등등이 자식클래스 일 때
Soup potatoSoup = new Soup();
Soup onionSoup(potatoSoup) ---- 1
Soup carrotSoup = potatoSoup -----2
1번과 2번 처럼 복사생성이나 대입(operator =) 했을 때 일어나는 함수를 깊은복사로 직접 구현해주고 싶으면
Food::Food(const Food& food) <- 요함수를 구현할게 아니라
Soup::Soup(const Food& food) ---- 3
Soup::Soup(const Soup& soup) ---- 4
3번이 아니라 4번을 구현해야 하는거죠??
그러면 또 의문점이 드는데 Soup이 아니라 Food로 아래처럼하면
Food creamSoup = new Soup();
Food cornSoup(creamSoup);
Food::Food(const Food& food) ----5
Food::Food(const Soup& soup) ----6
5번과 6번중에 뭘 구현해야 해요??
지금 이런 부분이 막히다는 것은 아직 이해를 제대로 못 했다는 것 같은데 어딜 다시 공부해야하는걸까요ㅠㅠ
1. 자식을 이용해 부모에 복사하려는 멍청한 짓은 안하길 바람. 엄연히 다른 인수임. 2. 실질적으로 저걸 해결하는 방안이 있긴 하다만 지금 수준에 볼 수 있는게 아님. 퍼펙트 포워딩을 이용한 perfect fowarding ctor를 찾길 바람
자식은 자식 클래스에서 copy ctor, operator()=을 받는 것을 구현하면 됨.