Papers/Others

객체생성

tomato13 2007. 2. 5. 21:05

프로그래밍을 하다가 문제에 직면했는데 시간이 없어서 샘플코드를 작성하여 아래에 올려둔다.

 

#include

class CTest1{
public:
 CTest1(int a){
  printf("CTest1 constructor\n");
 };
 ~CTest1(){
  printf("CTest1 desctructor\n");
 };

 void show(){
  printf("CTest1\n");
 };
};

class CTest2{
public:
 CTest2(int a){
  printf("CTest2 constructor\n");    
  objTest1(1);                               // <-- (1)
 };
 ~CTest2(){
  printf("CTest2 desctructor\n");
 };

 void show(){
  printf("CTest2\n");
 };

private:
 int m_a;
 CTest1 objTest1(int m_a);          // <-- (2)
};


int main(void){
 CTest2 objTest2(1);

 objTest2.show();

 return 1;
}

 

위의 코드를 수행하면 (1)에서 error가 발생할 것이다. (2)에서 object의 type만을 선언했을 뿐 객체가 생성되지 않았기 때문으로 생각된다. 때문에 (1)에서

 

CTest1 objTest1(1);

 

과 같이 새로운 생성작업이 필요할 것이다. 단, objTest1은 지역변수이기에 생성자함수 내에서만 유효할 것이다.