ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Constructor 와 메모리
    C++ 2014. 2. 12. 01:41

    Constructor는 Heap과 Stack 두 가지 메모리에 생성이 가능하다.

    1. Stack 에 생성이 되는 경우

      Constructor를 Variable 선언하는 방법으로 생성을 하는 방법

      객체가 생성이 될 때 Stack 에 생성이 될 때는 객체가 소멸할 때 다른 변수와 함께 소멸이 되므로 delete 할 필요가 없다.

      Object obj(3);

      Object obj2;

       

      // *******

      주의할 점

      Object obj();

      컴파일도 되서 문제없이 보이지만 이건 객체 생성이 구분이 아니라 obj() 라는 function을 부르는 구문이다.

       

    2. Heap에 생성이 되는 경우

      New를 사용하여 동적으로 객체를 생성하는 방법

      Object obj = new Object();

      Object obj2 = new Object(3);

      객체가 프로그램 수행중에 생성이 되므로 반드시 delete를 통해서 삭제를 해주어야 한다.

      1번의 경우와 비교할 때 New로 객체를 생성할 때는 함수 호출 같이 생성을 한다.

       

    3. Default Constructor 대한 규칙

      Default Constructor는Constructor가 하나도 정의되지 않았을 때 자동으로 생성이 되는 파라미터가 없는Constructor이다.

      그러나 파라미터가 있는Constructor를 정의하는 경우

      반드시 default Constructor를 정의해주어야 한다.

       

      MyClass(); -à MyClass() {} // 만일 Interface class라면 문제가 된다.

      MyClass(int i);

       

      위의 Default Constructor는 이렇게 선언이 가능하다.

      MyClass() = default;

      이것을 explicit default Constructor라고 한다. 즉 이경우 compiler에 의해서 Default Constructor가 생성이 된다.

      만일 dedefault Constructor를 생성하고 싶지 않는 경우는 explicit delete Constructor를 사용한다.

      MyClass() = delete;


    'C++' 카테고리의 다른 글

    Inheritance에서 virtual destructor  (0) 2014.02.14
    Copy Constructor vs Assignment operator  (0) 2014.02.12
    Cast 연산자  (0) 2014.01.22
    RTTI : Run-time type information 사용예  (0) 2014.01.18
    Template 사용  (0) 2014.01.16
Designed by Tistory.