[C++] 생성자(Default Constructor) 사용 시 주의사항

2022. 2. 8. 23:40Languages/C++

*<씹어먹는 C++>을 보며 공부하여 정리한 글입니다.

 

 

 

 

예시를 들기 위해 다음과 같이 몬스터(Monster) 클래스가 있다고 가정한다.

class Monster {
private:
   string name;
   int hp;
   int attackDamage;

public:
   Monster();
   Monster(string name, int hp, int attackDamage) { ... }
   ...
};

 

 


객체 생성 방법 (동적 할당 X)

 

암시적 방법(Implicit)

Monster monster("달팽이", 100, 5);
Monster defMonster;                  // 디폴트 생성자 사용하여 객체 생성

 

명시적 방법(Explicit)

Monster monster = Monster("달팽이", 100, 5);
Monster defMonster = Monster();     // 디폴트 생성자 사용하여 객체 생성

 

디폴트 생성자 사용 시 주의사항

 

함수를 사용하듯 다음과 같이 객체 생성을 하면 안 된다.

// Monster Monster();    리턴값이 Monster, 매개변수가 없는 Monster() 함수를 정의한 것으로 인식

 

명시적으로 디폴트 생성자 사용하는 법

 

C++ 11 이후부터는 컴파일러가 디폴트 생성자를 사용하도록 명시 가능

class Monster{
public:
   Monster() = default;
   ...
};

 

 

728x90
반응형