c++

11월 7일 생성자와 소멸자 순서

송시혁 2013. 11. 7. 11:00


#include <iostream>
using namespace std;

class smart
{
    public:
           int a;
  
          smart(int a)//인자가 1개인 경우
          {
            cout <<"생성자 호출" << a <<endl;
            smart::a=a;  
           //= 뒤에 있는 a는 인자 a. public: 안에 있는 int a 를 지정하기 위하여 smart::를 붙였다.

          }

        //인자가 2개인 경우
          smart(int a, int b)
          {
            cout <<"생성자 호출" << a << ","<< b <<endl;
            smart::a=a+b;
          }
          smart()
          {
            cout <<"생성자 호출\n";
            a=0;//여기서도 smart::사용해도 된다. 그러나 디폴트는 인자가 없으므로 생략하였다.
          }
         ~smart()
         {
           cout <<"소멸자 호출 [" << a << "]\n"
         }
};

int main()
{
  
  smart obj1;      //디폴트 생성자.
  cout <<"main 실행중1\n";  //생성자 오버로딩, 인자가 있는 것은 뒤에()를 붙이고
  smart obj2(100);    //()안에 변수의 값을 넣는다.
  smart obj3(200300);    //인자가 2개인 경우 
  cout <<"main 실행중2\n";
  

  return 0;
}
//생성자는 프로그램내에서 객체가 생성되면 바로 생성되고
//순서대로 실행이 된다.

//소멸자는 main()함수가 리턴하기 직전에 소멸되며, 생성자와 역순으로
//소멸된다.