C++ 11 Initializer :
// C++ 03
class Dog { // Aggregate class or struct
public:
int age;
string name;
};
Dog d1 = {5, "Henry"}; // Aggregate Initialization
// C++ 11 Initializer extended the scope of curly brace initialization.
class Dog
{
public:
Dog(int age, string name) {...};
};
Dog d1 = {5, "Henry"};
/* Uniform Initialization Search Order:
* 1. Initializer_list constructor
* 2. Regular constructor that takes the appropriate parameters.
* 3. Aggregate initializer.
*/
Dog d1{3};
class Dog
{
public:
int age; // 3rd choice
Dog(int a)
{ // 2nd choice
age = a;
}
Dog(const initializer_list& vec) { // 1st choice
age = *(vec.begin());
}
};
// C++ 03
class Dog { // Aggregate class or struct
public:
int age;
string name;
};
Dog d1 = {5, "Henry"}; // Aggregate Initialization
// C++ 11 Initializer extended the scope of curly brace initialization.
class Dog
{
public:
Dog(int age, string name) {...};
};
Dog d1 = {5, "Henry"};
/* Uniform Initialization Search Order:
* 1. Initializer_list constructor
* 2. Regular constructor that takes the appropriate parameters.
* 3. Aggregate initializer.
*/
Dog d1{3};
class Dog
{
public:
int age; // 3rd choice
Dog(int a)
{ // 2nd choice
age = a;
}
Dog(const initializer_list
age = *(vec.begin());
}
};
Comments
Post a Comment