c++ 초기화

    [C++] explicit 생성자

    [C++] explicit 생성자

    1. explicit 생성자(1) #include 특정 클래스 설계 시 복사 초기화를 사용하지 못하게 하는 것이 좋을 때가 있다. - 이제 아래에서 위의 코드의 문제를 해결해보자. 2. explicit 생성자(2) #include 아무 문제 없이 컴파일 된다. => 생성자가 explicit가 아니다. ② vector => 복사 초기화를 하면 에러가 난다. => 생성자가 explicit이다. => v3는 문제 없이 컴파일 된다. : v2에서 호출되는 생성자와 v3에서 호출되는 생성자는 다른 생성자다. ③ C++ 표준 스마트 포인터 => 복사 초기화를 하면 에러가 난다. => 생성자가 explicit이다.

    [C++] 초기화 리스트 (member initializer list)

    [C++] 초기화 리스트 (member initializer list)

    1. 멤버 초기화 리스트 (member initializer lists) #include class Point { int x; int y; public: Point(int a, int b) : x(a), y(b) { // 멤버 초기화 리스트 // x = a; // y = b; } }; int main() { Point p(1, 2); //-- class a = 0; // 초기화. 생성자 호출 class b; // 생성자 호출 b = 0; // 대입. 대입연산자 호출 } ① 멤버 초기화 리스트란? => 생성자 괄호 ( ) 뒤에 콜론(:)을 표기하고 멤버를 초기화 하는 것 ② 특징 => 대입(assignment)이 아닌 초기화(initialization) 2. 반드시 멤버 초기화 리스트를 사용해야 하는 경우..