c++ - 如果我显式定义带参数的构造函数,是否仍会创建默认构造函数?

标签 c++ constructor default

如果我显式定义一个参数但没有默认构造函数的构造函数,是否仍会创建默认构造函数?

谢谢!

最佳答案

不,在这种情况下您必须显式提供默认构造函数。

尽管您可以(从 C++11 开始),对于类 Foo,使用语法

Foo() = default;

重新引入编译器生成的默认构造函数的类声明中。 (请注意,您需要将其放在 public 部分以实现完全等效)。

或者,如果您为所有构造函数参数提供默认参数,则它成为默认构造函数。

关于c++ - 如果我显式定义带参数的构造函数,是否仍会创建默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38995603/

相关文章:

c# - 为什么无法识别 bool 默认值 (false)?

C++ - 将字符串的一部分存储在另一个字符串中

c++ - c++11 中的 typeid(T).name() 替代方案?

c++ - OpenGL 选择性离屏渲染到一个片段着色器中的 2 个纹理之一

sql - 默认值表达式函数何时/如何绑定(bind)到 search_path?

Ruby 默认将 IRB 配置为 Pretty_Inspect

c++ - Visual Studio 2010 和 2012 中 STL 容器字节大小的差异

c++ - 在 C++ 中初始化自定义类的 vector

c++ - 不同参数计数的结构方法列表

c++ - 不执行参数化基类构造函数就存在中间类