【问题标题】:In c++, if I create a constructor that takes one argument which has a default value - will that serve as a default (empty) constructor? [duplicate]在 c++ 中,如果我创建一个构造函数,该构造函数接受一个具有默认值的参数 - 它将用作默认(空)构造函数吗? [复制]
【发布时间】:2018-09-05 15:12:20
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

标签: c++ constructor default-constructor


【解决方案1】:

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

X默认构造函数是类X的构造函数,其中每个不是函数参数包的参数都有一个默认参数(包括构造函数的情况没有参数)。

(来自 C++1z 草案)

旧的措辞:

X默认构造函数是类X 的构造函数,可以不带参数调用。


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

没有“默认复制构造函数”这样的东西。但是“默认构造函数”和“默认复制构造函数”是有意义的。

【讨论】:

  • @HolyBlackCat:此外,标准措辞比 cppreference 更可靠。几次 cppreference 释义在重要方面改变了含义。
  • ... 这就是我们使用explicit 来防止意外转换的原因
猜你喜欢
  • 1970-01-01
  • 2012-06-30
  • 2020-05-14
  • 2014-05-19
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
相关资源
最近更新 更多