[C++] 초기화 리스트(Initialize List)
📌 1. 초기화 리스트(Initialize List)
예시 1 과 같이 생성자 내부에서 복사 초기화를 할 시, 디폴트 생성자가 먼저 호출되고 그 이후에 대입이 이루어진다.
하지만 예시 2 와 같이 초기화 리스트(Initialize List) 를 이용하면 생성자가 호출될 때 멤버 변수를 동시에 초기화를 할 수 있다.
초기화 리스트(Initialize List) 는 아래와 같이 작성한다.
(클래스 이름)(자료형 인자 1, 자료형 인자 2, ...) : (멤버 변수 1)(인자 1), (멤버 변수 2)(인자 2), ... {}
예시 1 (복사 초기화)
class Date {
private:
int year;
int month;
int day;
public:
Date() {
year = 2021;
month = 8;
day = 25;
}
Date(int _year, int _month, int _day) {
year = _year;
month = _month;
day = _day;
}
예시 2 (직접 초기화, 유니폼 초기화)
class Date {
private:
int year;
int month;
int day;
public:
Date() : year(2021), month(8), day(25) {}
Date(int year, int month, int day) : year(year), month(month), day(day) {}
// 멤버 변수와 인자의 이름이 같아도 정상적으로 작동
📌 2. 초기화 리스트를 사용해야 되는 경우
선언과 초기화를 동시에 해야 되는 상수 변수와 레퍼런스 변수가 멤버 변수에 있을 때는 초기화 리스트를 사용해야만 한다.
class Date {
private:
const int year;
int month;
int day;
public:
Date() : year(2021), month(8), day(25) {} // 가능
Date() // 불가능
{
year = 2021; // 상수 변수에 대입할 수 없음
month = 8;
day = 25;
}
또한 int
, double
과 같은 원시 자료형이 아닌 사용자가 정의한 클래스를 변수로 사용할 시, 초기화 리스트를 사용하면 대입 작업을 수행할 때보다 더 효율적으로 초기화를 할 수 있다.
Author And Source
이 문제에 관하여([C++] 초기화 리스트(Initialize List)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@leesu1012/C-초기화-리스트Initialize-List저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)