The method of initialize variable during generate class

class에서 instance가 생성될 때 class 내부 변수를 초기화 하는 방법은 세 가지가 있다.

  • class member variable define with  initialize
  • constructor initialize list
  • init at the constructor { }


첫 번째는 c++11 이상부터 가능

두 번째와 세 번째의 차이점은 이전 글 보기.



The order of initialize variable

결론부터 말하면 Initialize list 가 가장 빨리 선언되고, 그 다음 member variable define, init at the constructor { } 순으로 변수 초기화가 이뤄진다. 아래 예시에서 보면 알 수 있지만 Initialize list 가 실행되면 Member variable define 자체가 실행되지 않는다. 그리고 Initialize list 가 선언되어 있지 않다면 Member variable define과 Init at the constructor { } 과정이 실행된다. 즉 initialize가 두 번 발생함.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Test
{
private:
    int m_a = printf("member variable m_a init\r\n");
    int m_b = printf("member variable m_b constructor init\r\n");
    int m_c = printf("member variable m_c no init\r\n");
    int m_test;
 
public:
    Test (): m_a(printf("m_a initialize list\r\n"))
    {
        m_b = printf("m_b constructor init\r\n");
    }
 
    ~Test()
    {}
};
 
int main()
{
    Test default_test;
 
    return 0;
}
 
cs

------------ 결과 ------------

m_a initialize list
member variable m_b constructor init
member variable m_c no init
m_b constructor init


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

모듈러란? (Mod)  (1) 2019.05.11
생성자에 콜론( : ) 를 쓰는 이유  (0) 2019.05.10
structure operator  (0) 2019.05.09
Posted by 나무길 :