이 코드에서 뭐가 생성자인가요?

조회수 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 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    둘다 생성자 맞습니다.

    Person(char * myname, int myage)
    

    위의 생성자는 아래처럼 클래스 변수를 생성할때 호출됩니다. 단, name은 동적할당된 char형 배열 안의 문자열.

    Person bill(name, 20);
    

    반면에,

    Person()
    

    위의 생성자는 아래처럼 클래스 변수를 생성할때 호출됩니다.

    Person steve;
    

    참고로, 매개변수가 없는 Person()과 같은 형식의 생성자를 기본 생성자라고 부릅니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)