• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

_pet = new Pet(*knight._pet);

21.06.28 15:49 작성 조회수 132

0

class Pet { };
에서 생성자에

Pet(const Pet& pet) 같은 복사 생성자를 만들어 주지 않았는데

_pet = new Pet(*knight._pet);

이 코드가 통과 되는게 이해가 안갑니다 ㅜㅜ

 

답변 1

답변을 작성해보세요.

1

class를 만들 때 별도로 명시하지 않아도
컴파일러가 자동으로 만들어주는 함수들이 있습니다.
(기본 생성자, 소멸자, 복사 생성자, 복사 연산자, 이동 생성자, 이동 연산자 등)

항상 자동 생성되는건 아니고 일부 코드를 넣으면
컴파일러가 자동 생성하지 않을 수도 있습니다.
일명 [Rule of Three]라고 하는데 복사 생성자, 복사 연산자, 소멸자 중 하나를 선언했으면,
나머지도 우리가 알아서 만들어야 합니다.