생성자

덤프버전 :

1. 개요
2. 예시


1. 개요[편집]


constructor
객체 지향 프로그래밍에서 객체가 생성될 때 초기화시켜주는 함수를 의미한다. 필요에 따라 객체 내 데이터에 특정한 값을 입력하기도 한다.

C++자바같은 언어에서는 클래스와 동일한 이름을 가진 함수가 생성자로서 기능한다. 그 외 파이썬이나 Objective-C같은 언어에서는 특정한 키워드가 따로 정의되어있다.

생성자는 자료형을 갖지 않는다. void조차 아니다.


2. 예시[편집]


다음과 같은 C++ 코드가 있다고 가정하자.
class Game{
private:
    string title; // 게임의 제목을 나타낸다
    int price; //게임의 가격을 나타낸다.
}

int main(){
    Game Minecraft; //Minecraft라는 이름의 인스턴스가 생성
}

이 경우, Minecraft라는 이름의 인스턴스는 생성되기만 했을 뿐, 게임의 제목과 가격은 값이 지정되지 않았다. 이런 경우에는 다음과 같은 방식으로 게임의 제목과 가격을 정해줄 수 있다.
class Game{
private:
    string title; // 게임의 제목을 나타낸다
    int price; //게임의 가격을 나타낸다.
public:
    void set_data(string s, int n); //게임의 제목과 가격을 지정해 줄 함수이다.
}

void Game::set_data(string s, int n){
    title = s;
    price = n
}

int main(){
    Game Minecraft; //Minecraft라는 이름의 인스턴스가 생성된다.

    Minecraft.set_data("Minecraft", 30000); //게임의 이름과 가격을 정해주기 위해 함수를 호출한다.
}

이와 같은 방식으로 인스턴스에다가 게임의 제목은 Minecraft로, 가격은 30000으로 지정할 수 있다. 하지만, 생성자를 사용하면 더 간편하게 지정이 가능하다.
class Game{
private:
    string title; // 게임의 제목을 나타낸다
    int price; //게임의 가격을 나타낸다.
public:
    Game(string s, int n); //생성자이므로, 클래스와 동일한 이름을 가지며 자료형을 가지지 않는다.
}

Game::Game(string s, int n){
    title = s;
    price = n;
}

int main(){
    Game Minecraft("Minecraft", 30000); //Minecraft라는 이름의 인스턴스가 생성되는 동시에 제목과 가격이 지정된다.
}



2.1. 오버로딩[편집]




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-12-02 22:52:32에 나무위키 생성자 문서에서 가져왔습니다.