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)
[您可以将此作为单行执行.我把它分开只是为了演示.]
空括号{}是构造函数的单个主体,在本例中为空.
Month(char first, char second, char third)
: first(first)
, second(second)
, third(third)
{} //DOES WORK :)
Run Code Online (Sandbox Code Playgroud)
正如其他人指出的那样,它只是一个以逗号分隔的项目列表。该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)
| 归档时间: |
|
| 查看次数: |
8331 次 |
| 最近记录: |