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번중에 뭘 구현해야 해요??



지금 이런 부분이 막히다는 것은 아직 이해를 제대로 못 했다는 것 같은데 어딜 다시 공부해야하는걸까요ㅠㅠ