Programing/C- programing

C++ Class 생성자 소멸자 간단한 코드

sosal 2009. 10. 13. 10:45
반응형

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */


class에 대한 코드를 한번 살펴보겠습니다.

#include<iostream>
#include<cstring>
using namespace std; //간단한 입출력 헤더와 string 제어 헤더문입니다.

class CTest{
private:
 const int x;
public:
 CTest();                    // 디폴트 생성자
 CTest(int nValue);
 ~CTest();                  //클레스가 종료될때 호출되는 함수
 void print() const;
 const char *changeText() const;
};
/*
 * 클레스 선언문입니다.
 * private에는 외부에서 접근할수 없는 변수입니다.
 * public안에서 선언된 함수들이 private 변수에 접근하여 값을 바꾸던지 하겠죠.
 * 아래부터는 클레스 안에 있는 함수들의 내용입니다.
 */

CTest::CTest(int value) : x(value){  //empty
}
/*
 * 이 함수는 자료형도 없고, 클레스 이름과 동일한 함수입니다.
 * 이것을 생성자 함수라고 합니다.
 * 클레스가 선언될때 자동으로 실행되는 함수입니다.
 * (프로그램이 종료될때 객체를 제거하는 소멸자 함수도 아래에 있습니다.)
 * ex)
 * CTest a(10); //생성자 함수가 value를 하나 받는군요.
 * 클레스 이름부분을 좀더 자세히 보겠습니다.
 * CTest::CTest(int value) : x(value){}
 * : x(value)는 x라는 변수가 private 안에 const로 선언되어있기 때문에
 * 직접 제어하지 못합니다. 그럴땐 저런식으로 값을 넘겨주게 됩니다.
 */

CTest::~CTest(){
 //empty
}

void CTest::print() const{ //const로 끝나는 함수는 클레스 내 변수를 변경하지 못함
                                     // x=20;// (내부적으로 어떠한 값도 변경 못한다. const임)
 int x = 20;                      // 하지만 새로운 멤버변수는 선언 가능
 cout<< "x = "<<x<<endl;
 cout<< " this -> x = " << this->x;
 cout<< "\n (*this).x = " <<(*this).x;
}
/*
 *  위에서 언급했던 소멸자입니다. 역시 자료형은 없고 이름이 클레스 이름과 똑같은데
 *  ~ 이게 붙어있네요. 소멸자를 뜻하는 것입니다.
 *  프로그램이 종료될때 자동으로 실행되어 메모리를 없애줍니다.
 */

const char* CTest::changeText() const{ 
 char *pTest;               //리턴받는 변수가 const라서 const로 돌려준다.
 pTest = new char[30];
 strcpy(pTest,"I am a boy.");
 return pTest;
}

int main(void){
 CTest testobj(12);
 testobj.print();
 //testobj.x=10;

 const char *pTemp;
 pTemp = testobj.changeText();
 cout<<endl<<pTemp<<endl;
 return 0;
}