생성자(Constructor)
Programming/C++ 2012. 5. 12. 02:35 |생 성 자
클래스 정의에서 다음의 형태를 띠는 함수가 생성자이다.
# 클래스의 이름과 함수의 이름이 동일하다.
# 반환형이 선언되어 있지 않으며, 실제로 반환하지 않는다.
이러한 유형의 함수를 가리켜 '생성자'라 하며, 생성자는 "객체 생성시 딱 한번 호출된다."
----------------------------------------------------------------------------------------------------------------------------------------------------------------
* 생성자도 함수의 일종이니 오버로딩이 가능하다.
* 생성자도 함수의 일종이니 매개변수에 '디폴트 값'을 설정할 수 있다.
28라인의 함수 void SimpleClass(void) 와 46라인의 함수void SimpleClass(int n1=1, int n2=0) 를 다음과 같은 문장으로 구성하면 안된다.
SimpleClass sc1(); (X)
다음과 같이 구성을 해야 한다.
SimpleClass sc1; (O)
SimpleClass * ptr = new SimpleClass; (O)
SimpleClass * ptr = new SimpleClass(); (O)
매개변수가 선언되어 있지 않으니 소괄호를 생략할 수 있다.
그렇다면, 다음 문장도 허용이 가능할 것 같은데 허용이 안된다!!
SimpleClass sc1(); (X)
예제)
출력 결과 : 20, 30
※ 보통 함수의 원형은 전역적으로(함수 밖에) 선언하지만, 위 예제에서 보이듯이 함수내에 지역적으로도 선언 가능하다.
위 예제의 42라인의 문장은 이러한 함수의 원형 선언에 해당된다. 즉, 이 문장을 void형(인자를 받지 않는) 생성자의 호출문으로 인정해 버리면, 컴파일러는 이러한 문장을 만났을 때, 이것이 객체생성문인지 함수의 원형선언인지를 구분할 수 없게 된다.
그래서 이러한 유형의 문장은 객체생성이 아닌, 함수의 원형선언에만 사용하기로 약속하였다.
'Programming > C++' 카테고리의 다른 글
디폴트 생성자(Default Constructor) (0) | 2012.05.20 |
---|---|
이니셜라이저(Initializer) (0) | 2012.05.19 |
캡슐화 (0) | 2012.05.12 |
const 함수 (2) | 2012.05.08 |
정보은닉(Information Hiding) (0) | 2012.05.03 |