【发布时间】:2016-08-17 11:39:19
【问题描述】:
如果我明确定义构造函数带有参数但没有默认构造函数,是否仍会创建默认构造函数?
谢谢!
【问题讨论】:
标签: c++ constructor default
如果我明确定义构造函数带有参数但没有默认构造函数,是否仍会创建默认构造函数?
谢谢!
【问题讨论】:
标签: c++ constructor default
不,在这种情况下,您必须显式提供默认构造函数。
虽然您可以(从 C++11 开始),但对于 Foo 类,使用语法
Foo() = default;
在类声明中重新引入编译器生成的默认构造函数。 (请注意,您需要将其放在 public 部分中以获得完全等效)。
或者,如果您为所有构造函数参数提供默认参数,那么它成为默认构造函数。
【讨论】:
不,不会,这就是您希望类用户显式提供参数的关键。
但是,如果您对参数使用默认值,它将成为默认构造函数
class Foo
{
Foo(bool flag=false); // not a default constructor, but acts the same
};
【讨论】:
bool 类型,那些日子python 太多了:))
没有。如果定义构造函数,则仅存在您定义的构造函数。如果要保留默认构造函数,则必须重新定义它。
class MyClass
{
MyClass(){};
.
.
.
};
【讨论】:
= default 符号。
-std=c++11?它也应该是默认的(我是 C++ 11 的新手,但我喜欢它,而且我学得很快)