如果显式定义带参数的构造函数,是否仍然会创建默认构造函数?
Will default constructor still be created if I explicitly define a constructor with arguments?
如果我显式定义了一个带有参数但没有默认构造函数的构造函数,还会创建默认构造函数吗?
谢谢!
不,在这种情况下,您必须显式提供默认构造函数。
尽管您可以(从c++ 11开始),对于类Foo
,使用语法
Foo() = default;
,其中重新引入了编译器生成的默认构造函数。(注意,您需要将其放在public
部分以获得精确的等效性)。
或者,如果您为所有构造函数参数提供默认实参,那么它将成为默认构造函数。
不,它不会,这是当您希望类用户显式地提供参数时的要点。
但是,如果您为参数使用默认值,则它将成为默认构造函数
class Foo
{
Foo(bool flag=false); // not a default constructor, but acts the same
};
No。如果定义了构造函数,则只显示所定义的构造函数。如果你想保留默认构造函数,你必须重新定义它。
class MyClass
{
MyClass(){};
.
.
.
};
相关文章:
- 通过构造函数创建的所有对象都具有相同的向量
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- std::map<int, A> 运算符 [] 需要使用空构造函数创建 A
- 稍后使用<Class>调用类构造函数创建 std::vector
- 通过类构造函数创建线程
- 尝试使用构造函数创建对象时出错
- 运算符 = 不匹配,构造函数创建一个指针
- C++ - 类构造函数创建对象,但构造的结果不同
- 我可以为带有参数的构造函数创建类工厂
- 我们可以说构造函数创建对象
- 如何使用在另一个类的构造函数中的堆栈上接受参数的构造函数创建对象
- 构造函数创建const对象
- 使用基构造函数创建派生对象
- 使用函数中的复制构造函数创建实例的副本,该函数获取作为基对象传递的实例
- 在从基类构造函数创建的单独线程中调用纯虚函数
- 递增由向 boost::p ython 公开的构造函数创建的对象的引用计数
- 通过使用不同的构造函数创建类的实例
- 通过使用不同的构造函数创建对象,并最终释放对象的内存
- 如何使用重载构造函数创建两个动态对象