如果你不想要默认构造函数该怎么办?

主要观点:讨论是否需要默认构造函数,以及没有默认构造函数时的情况和应对方法。
关键信息

  • 默认构造函数无参数,可初始化成员为默认值,未定义时会自动生成。
  • 从设计角度看,有些类需要默认构造函数(如记录行驶时间等的设备),有些则不需要(如表示人或任务标识符)。
  • 没有默认构造函数会给使用标准库类型(如std::vectorstd::map)带来困难,也会限制类的组合。
  • 可以通过为类提供默认构造函数、用std::optionalstd::variant包装类等方式来处理没有默认构造函数的情况。
    重要细节
  • 示例代码展示了不同情况下使用各种方法的效果,如TaskID类及其与其他容器和函数的交互。
  • std::optional需要额外验证对象是否存在,以避免错误;std::variant可以持有多种类型,但使用时需较多std::holds_alternative<T>std::get<T>,影响可读性。
  • 还可以使用std::variant结合enum来处理无效状态,但检查和判断时需混合两种语法。
    结论:讨论了不同情况下处理没有默认构造函数的方式,可根据需求选择用std::optionalstd::variant包装类等方法,未讨论使用智能指针的情况。最后呼吁读者点赞、订阅邮件和在推特上关注。
阅读 10
0 条评论