gpt4 book ai didi

c++ - 如何在 C++ 中处理 "default constructor"

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:21 24 4
gpt4 key购买 nike

我最近遇到了一个问题,因为我是一名自学的 C++ 程序员,所以我真的很想知道现实世界中的专业人士是如何解决它的。

为所有类编写默认构造函数是个好主意吗?如果您的类没有默认构造函数,STL 中是否有某些部分将无法工作?

如果是,那么如何编写一个默认构造函数来做一些明智的事情呢?也就是说,如果根本没有合理的默认值,我如何为我的私有(private)成员分配默认值?我只能想到两个解决方案:

  1. 为每个成员使用指针(或 unique_ptr),这样 nullptr 就意味着该字段未初始化。

  1. 添加额外的字段/逻辑/方法来完成检查字段是否已初始化的工作并依赖它(想想有点像 unique_ptr 的“重置”方法)。

人们如何在现实世界中解决此类问题?

最佳答案

如果你的数据类型有一个默认的构造函数没有意义,那么就不要写一个。

(STL 早已过时,但我假设您指的是标准库。)即使包含的类型没有默认构造函数,大多数标准库容器也能正常工作。一些值得注意的问题:

  • std::vector<T>::resize(n)需要 T有一个默认的构造函数。但是没有一个,你可以使用 eraseinsert相反。

  • std::map<K,V>::operator[]std::unordered_map<K,V>::operator[]需要 V有一个默认的构造函数。但是没有一个,你可以使用 findinsert相反。

关于c++ - 如何在 C++ 中处理 "default constructor",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34246655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com