多变量的c++初始化列表



我正在学习如何初始化列表。

我下面有一个简单的类,并试图初始化变量列表。第一个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;
};

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

试试这个:

  Month(char first, char second, char third) 
     : first(first), second(second), third(third) {} 

[你可以把它写成一行。我把它分开只是为了表示。

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

Month(char first, char second, char third) 
      : first(first)
      , second(second)
      , third(third)
{} //DOES WORK :)

正如其他人指出的那样,它只是一个逗号分隔的项目列表。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
};

初始化式是逗号分隔的,构造函数应该只有一个主体。

相关内容

  • 没有找到相关文章

最新更新