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 |