[목차] == 개요 == {{{+1 constructor}}} [[객체 지향 프로그래밍]]에서 객체가 생성될 때 초기화시켜주는 함수를 의미한다. 필요에 따라 객체 내 데이터에 특정한 값을 입력하기도 한다. [[C++]]과 [[자바]]같은 언어에서는 클래스와 동일한 이름을 가진 함수가 생성자로서 기능한다. 그 외 [[파이썬]]이나 [[Objective-C]]같은 언어에서는 특정한 키워드가 따로 정의되어있다. 생성자는 자료형을 갖지 않는다. void조차 아니다. == 예시 == 다음과 같은 [[C++]] 코드가 있다고 가정하자. {{{#!syntax cpp class Game{ private: string title; // 게임의 제목을 나타낸다 int price; //게임의 가격을 나타낸다. } int main(){ Game Minecraft; //Minecraft라는 이름의 인스턴스가 생성 } }}} 이 경우, Minecraft라는 이름의 인스턴스는 생성되기만 했을 뿐, 게임의 제목과 가격은 값이 지정되지 않았다. 이런 경우에는 다음과 같은 방식으로 게임의 제목과 가격을 정해줄 수 있다. {{{#!syntax cpp 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으로 지정할 수 있다. 하지만, 생성자를 사용하면 더 간편하게 지정이 가능하다. {{{#!syntax cpp 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라는 이름의 인스턴스가 생성되는 동시에 제목과 가격이 지정된다. } }}} === [[오버로딩]] === [[분류:프로그래밍]]