두 종류의 생성자
이니셜라이저 리스트 생성자, 위임 생성자
9장 - 두 종류의 생성자
1) 이니셜라이저 리스트 생성자
std::initializer_list
class Fruit{
public:
Fruit(initializer_list<double> args){
prices.reserve(args.size());
for(const auto& value : args){
prices.push_back(value);
}
}
// prices.assign(args); 이거 하나로도 가능하다.
private:
vector<double> prices
}
위와 같이 범위기반 for문으로 각 원소에 접근하거나 vector 함수로 접근할 수 있다.
2) 위임 생성자
같은 클래스의 다른 생성자를 호출하는 방법이다. 생성자의 내부에서 호출할 수는 없고, 이니셜라이저에서 이것만 호출해야 한다.
class Fruit{
public:
Fruit(int price) : Fruit(string name){ /*...*/ }
생성자의 호출 순서는 price 시작 → name 시작 → name 종료 → price 종료
이다. 이 때 서로 재귀적으로 호출하지 않아야 한다.