이 코드에서 뭐가 생성자인가요?
조회수 292회
include <iostream>
#include <cstring>
using namespace std;
class Person{
private:
char *name;
int age;
public:
Person(char * myname, int myage){
int len = strlen(myname) + 1;
name = new char[len];
strcpy(name, myname);
age = myage;
}
Person(){
name = NULL;
age = 0;
cout << "called Person()"<<endl;
}
};
두 개 다 생성자인가 했는데 생성자는 한번만 호출될 수 있지 않나요?
1 답변
-
둘다 생성자 맞습니다.
Person(char * myname, int myage)
위의 생성자는 아래처럼 클래스 변수를 생성할때 호출됩니다. 단, name은 동적할당된 char형 배열 안의 문자열.
Person bill(name, 20);
반면에,
Person()
위의 생성자는 아래처럼 클래스 변수를 생성할때 호출됩니다.
Person steve;
참고로, 매개변수가 없는
Person()
과 같은 형식의 생성자를 기본 생성자라고 부릅니다.-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력