std::initializer_list
cppreference_ std::initializer_list
Stackoverflow _The constructor initializer list and const variable
Stackoverflow _The constructor initializer list and const variable
-
initializer list
className (parameter) : varName1(arg), varName2(arg) {}; - 위의 형식으로 생성자를 정의하는 것으로 생성과 동시에 멤버 변수를 초기화 하고, 이를 생성자 리스트라고 한다.#include using namespace std; class myclass { int integer; char character; public: myclass(): integer(10), character('A'){};// constructor definition. // ": integer(10), character('C')" is the initializer list // ": integer(10), character('C') {}" is the function body void show(){ cout<<"integer : " < - 생성자 리스트의 장점은 앞서 말했 듯 "생성과 동시에" 멤버를 초기화한다는 것에 있다. 기존의 방식으로 생성자를 "member_var = value"로 정의한다면, 변수를 생성하고, 그 뒤를 이어 변수에 값을 대입하기 때문에 아래의 예시처럼 에러를 내고 const로 선언한 상수는 초기화할 수 없다.int var1; var1 = 1; const var2; var2 = 2; // Error _ read only data 하지만 생성자 리스트를 사용하면 생성과 동시에 대입하므로 const 상수를 초기화 할 수 있는 것이다.int var3 = 3; const var4 = 4; 아래 예시는 const 변수 초기화와 파라미터가 있는 생성자를 초기화 리스트로 초기화하는 것을 확인 할 수 있는 코드이다.#include using namespace std; class myclass { int integer; char character; const float float_const; public: myclass(int i, char c): integer(i), character(c), float_const(5.0) {}; void show(){ cout<<"integer : " <