在构造函数中默认类的结构字段

时间:2013-10-27 21:24:50

标签: c++ class structure default

假设我有一个名为donut的类型。我想为甜甜圈制作一个构造函数,它有3个参数,两个整数和一个结构奶油,它有两个整数作为字段。我想在没有提供参数的情况下为参数设置默认值。那么语法怎么样?

Donut::Donut(int a=0, int b=0, cream car={0, 0})

                    : donutfield1(a), donutfield2(b), donutfield3(car) { }

这不起作用......

2 个答案:

答案 0 :(得分:2)

尝试

Donut::Donut(int a=0, int b=0, cream car=cream{0, 0})

(实际上你的代码应该在符合C ++ 11的编译器上编译,但如果没有,上面的内容将有希望帮助)

答案 1 :(得分:1)

此语法在C ++ 11中引入(它称为扩展初始化列表)。要使代码与C ++ 03兼容,请使用旧语法:

Donut::Donut(int a=0, int b=0, cream car = cream(0, 0)) ...

请注意,如果您的类(此处为cream)提供的构造函数具有单个参数且不使用explicit关键字,则可以从实例构造它没有任何括号或括号的参数类型,例如cream car = 0