默认构造函数中类的结构字段
defaulting a structure field of a class in a constructor
假设我有一个名为甜甜圈的类型。我想为甜甜圈制作一个构造函数,它需要 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
.
相关文章:
- 将结构字段的类型展开为可变模板参数
- 结构字段名称与 GDB 中的 STL 数组冲突
- 初始化派生结构的基部分/意外打包派生结构字段以对齐基结构的间隙
- 如何为结构字段动态分配字符空间
- 实例化时结构字段中的默认值
- 如何使用函数的输出初始化 const 数组结构字段?
- 无法访问 Arduino 结构字段。错误"退出状态 1。xxxx 不命名类型"
- 列出常量和数组结构字段的初始化
- 如何使用 gtest 构造检查存储在向量中的结构(字段)?
- 将带有结构字段的结构从C 返回到C#PINVOKE
- 嵌套结构字段的 clang 格式规则
- 如何匹配通过引用传递给模拟函数的结构字段
- 在C 中获得相反的结构字段
- 如何为我的 Vulkan 类创建此通用数据结构字段
- 如何初始化结构字段 std::map<std::string, std::string>称为参数
- 在编译时使用模板在跨结构字段中迭代
- 正在取消引用自定义结构字段的迭代器
- 结构字段上的智能指针
- 使用C预处理器在结构字段上进行迭代
- 结构字段的默认初始化行为