Nagie's DevStory

[CPP] 21. 생성자 (Constructor) 본문

Programming/C++

[CPP] 21. 생성자 (Constructor)

Nagie 2023. 10. 21. 21:52
728x90

생성자는 객체가 생성될 때 자동으로 호출되는 특별한 멤버 함수라고 말했다.

생성자의 주요 역할은 객체의 초기화, 데이터 멤버의 설정, 동적 메모리 할당 등을 수행하며

생성자는 클래스의 이름과 동일하며 반환 유형을 가지지 않는다.

다음은 생성자의 사용 예시이다.

class User {
private:

	int nUserNum;
	std::string strUserName;

public :

	User() {

		this->nUserNum = 0;
		this->strUserName = "Unknown";
	}

	User(int num, std::string name) {

		this->nUserNum = num;
		this->strUserName = name;
	}

};

 

다만 이런 식으로 생성자를 오버 로딩을 하게 된다면 소스 코드가 길어져 보기가 힘들어지니

아래처럼 디폴트 파라미터를 사용해 작성하는 걸 권장한다.

 

class User {
private:

	int nUserNum;
	std::string strUserName;

public :


	User(int num = 0, std::string name = "Unknown") {

		this->nUserNum = num;
		this->strUserName = name;
	}

};

 

그리고 우리가 동적 메모리를 할당받기 위해 사용하던 new 연산자를 사용하면 객체의 생성자를 호출하게 된다.

다만 malloc()을 사용하면 생성자 호출이 안 되니 주의하자

이런 문제가 있어 C++에선 malloc()과 free()의 사용을 권장하지 않는다.

728x90
Comments