多个变量的C++初始化列表

duk*_*vin 7 c++ class initialization-list

我正在尝试学习如何初始化列表.

我在下面有一个简单的类,并尝试初始化变量列表.第一Month(int m): month(m)部作品.我正在尝试使用多个变量在该行下面执行类似的操作.这种格式有可能吗?我是否必须脱离一个班轮?

class Month
{
public:
    Month(int m) : month(m) {} //this works
    Month(char first, char second, char third) : first(first){} : second(second){} : third(third){} //DOES NOT WORK
    Month();
    void outputMonthNumber(); //void function that takes no parameters
    void outputMonthLetters(); //void function that takes no parameters
private:
    int month;
    char first;
    char second;
    char third;
};
Run Code Online (Sandbox Code Playgroud)

显然我没有太多线索如何做到这一点,任何指导将不胜感激,谢谢

And*_*mas 10

试试这个:

  Month(char first, char second, char third) 
     : first(first), second(second), third(third) {} 
Run Code Online (Sandbox Code Playgroud)

[您可以将此作为单行执行.我把它分开只是为了演示.]

空括号{}是构造函数的单个主体,在本例中为空.


Arm*_*yan 5

Month(char first, char second, char third) 
      : first(first)
      , second(second)
      , third(third)
{} //DOES WORK :)
Run Code Online (Sandbox Code Playgroud)


Ann*_*inn 5

正如其他人指出的那样,它只是一个以逗号分隔的项目列表。该variable(value)语法只是构造基本数据类型的默认方法,例如,您可以在初始化列表之外使用此方法。此外,如果类的成员也是具有构造函数的类,则可以以完全相同的方式调用它。

您不仅必须将列表放入类的声明中,以供将来参考。例如,这段代码非常好

class Calender{
    public:
         Calender(int month, int day, int year);
    private:
         int currentYear;
         Time time;
};

Calender::Calender(int month, int day, int year) : currentYear(year), time(month, day) {
    // do constructor stuff, or leave empty
};
Run Code Online (Sandbox Code Playgroud)