c++ - 在 C++ 中,如果我创建一个构造函数,它接受一个具有默认值的参数——它会用作默认(空)构造函数吗?

标签 c++ constructor default-constructor

<分区>

下面的单参数构造函数是否也作为默认构造函数?

class SomeClass
    {
    public:
        SomeClass(const int &a = 4);
    }

(假设构造函数定义明确等)

谢谢!

最佳答案

是的,默认构造函数的定义是允许参数的,只要有默认值即可:

A default constructor for a class X is a constructor of class X for which each parameter that is not a function parameter pack has a default argument (including the case of a constructor with no parameters).

(来自 C++1z 草案)

旧的措辞:

A default constructor for a class X is a constructor of class X that can be called without an argument.


此外,你的复制构造函数将被隐式定义为默认的,因为你还没有声明一个。

没有所谓的“默认复制构造函数”。但是“默认构造函数”和“默认复制构造函数”是有意义的。

关于c++ - 在 C++ 中,如果我创建一个构造函数,它接受一个具有默认值的参数——它会用作默认(空)构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52188474/

相关文章:

c++ - 保护应用程序免受库泄漏

c++ - 具有相同名称但不同签名的多个构造函数定义 (C++)

javascript - 我应该在对象原型(prototype)中声明 javascript 对象方法吗?

c++ - 错误 C2082 : redefinition of formal parameter 'tmp'

c++ - 如何为已删除的默认构造函数编写测试

c++ - 为什么具有用户声明的析构函数的类具有隐式默认的构造函数?

c++ - C++ 中的递归构造函数

c++ - QBitArray移位

c++ - Qt::如何降低 QSpinBox 中的文本

c++ - 来自 OSX 应用程序的 Mkdir