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

defaulting a structure field of a class in a constructor

本文关键字:结构 字段 构造函数 默认      更新时间:2023-10-16

假设我有一个名为甜甜圈的类型。我想为甜甜圈制作一个构造函数,它需要 3 个参数、两个整数和一个有两个整数作为字段的结构奶油。我想为参数设置默认值,以防没有提供的参数。那么语法会如何呢?

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

这行不通...

尝试

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

(事实上,您的代码应该在符合 C++11 的编译器上进行编译,但如果没有,以上内容有望有所帮助)

此语法在 C++11 中引入(称为扩展初始值设定项列表)。为了使您的代码与 C++03 兼容,请使用旧语法:

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

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