지우너

생성자(constructor)와 멤버 초기화 리스트(member initializer list) 본문

Programming/C++

생성자(constructor)와 멤버 초기화 리스트(member initializer list)

지옹 2024. 8. 11. 20:05

요약

멤버 초기화 리스트를 사용하는 방식이 더 효율적이고 권장된다.

const 멤버 변수참조 멤버 변수를 초기화할 때는 반드시 이 방식을 사용해야 한다.

 

구조체/클래스 이름( 매개변수) : 변수1(매개변수), 변수2(nullptr), 변수3(nullptr) {}

 

위와 같은 방식으로 작성된다. 

방법1. 대입

struct Node {
    int data;
    Node *prev, *next;
    Node(int data){
    	this->data = data;
        prev = nullptr;
        next = nullptr;
    }
};

 

방법2. 멤버 초기화 리스트

struct Node {
    int data;
    Node *prev, *next;
    Node(int data) : data(data), prev(nullptr), next(nullptr) {}
};

 

Node(int data): 생성자 함수의 선언부. Node 클래스의 객체를 생성할 때 호출되며, int data를 매개변수로 받는다.

: (콜론): '멤버 초기화 리스트(member initializer list)'의 시작

data(data): Node 구조체의 data 멤버 변수를 생성자의 data 매개변수로 초기화한다는 의미. 비슷하게 prev(nullptr), next(nullptr)도 Node 구조체의 prev와 next라는 변수를 nullptr로 초기화하겠다는 의미이다.

{}: 생성자 본문. 비어있기 때문에 아무 작업도 하지 않음. cout << "매개변수가 data인 생성자 호출\n"; 등을 넣어 어떤 생성자가 호출되는지 볼 수도 있다.

 

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

C++ Set 사용하기  (0) 2024.08.07
C++ 클래스(Class)  (0) 2024.05.30
C++ Sort()함수  (0) 2024.05.28
[C++] array, string, vector size 구하기  (0) 2024.05.27