본문 바로가기
Programming/C/C++

C++ 기초 [3]

by bbolmin 2013. 2. 27.

 

[ const 함수 ]

 

1) const 함수 내에서는 멤버변수의 값을 변경하지 못한다.

2) const 함수 내에서는 const 아닌 함수의 호출이 제한된다.

3) 아래와 같이 선언된 const 참조자나 포인터 변수에서는 const함수만 호출가능하다.

4) const 키워드만으로도 오버로딩이 가능하다. (이 경우 const 객체에서 const 메소드 호출)

 

TestClass *val1 = new TestClass;
const TestClass &myobj2 = val1 ;
const TestClass *myobj3 = val1 ;

 

 

 

 

[ 생성자 ]

 

생성자는 객체 생성시 딱 한번 호출된다.

생성자 정의 : 클래스의 이름과 함수의 이름이 동일하게하고 반환형이 없이 만들면 됨.

 

 

객체 생성 예

 

ex)

 

ExClass val; // ExClass val()는 안됨;

ExClass pval = new ExClass

ExClass pval = new ExClass()

 

ExClass val2(100);

ExClass *pval2 = new ExClass(100);

 

[*] malloc을 이용해서 동적할당하는 경우에는 생성자가 호출되지 않음.

 

 

[ 소멸자 ]

 

소멸자는 객체 소멸시 호출된다.

소멸자 정의 : 클래스의 이름앞에 ~를 붙이고 반환형이 없으며 매개변수는 항상 void로 한다.

(주로 생성자에서 할당한 리소스 해제에 사용.)

 

 

 

[ 멤버 이니셜라이저(Member Initializer) ]

 

멤버변수의 초기화에 활용된다.

 

ex)

class Test1

{

private:

Test2 Test2_obj;

Test3 Test3_obj;

int myval;

 

public:

Test1(int val1, int val2, int val3, int val4)

:Test2_obj(val1, val2), Test3_obj(val3), myval(val4)

{}

};

 

위와 같이 멤버변수가 객체인 경우에는 해당 클래스의 생성자를 호출, 일반 변수인 경우에는 int myval = val4와 같은 문장이 된다.

(만약 함수 몸체에서 변수 myval을 초기화 한다면 int myval; myval = val4;와 같은 2줄의 코드로 볼 수 있다.)

따라서 멤버 이니셜라이저를 사용하면 선언과 동시에 초기화가 가능하기 때문에 멤버 변수에 const나 참조자를 사용할 수 있게된다.

 

 

 

 

'Programming > C/C++' 카테고리의 다른 글

C++ 상속시 생성자, 소멸자의 호출  (0) 2013.03.09
복사 생성자  (0) 2013.02.27
C++ 기초 [2]  (0) 2013.02.26
C++ 기초 [1]  (0) 2013.02.26
Unix 입출력 [ read/write - recv/send ]  (0) 2012.11.30