Zuo*_* Hu 4 c++ overloading constructor-overloading default-constructor language-lawyer
从这个堆栈溢出问题中,答案包含以下引用:
...定义表示所有默认构造函数(如果有多个)...
怎么会有多个默认构造函数,为什么这可能有用或被标准允许?
默认构造函数不必没有参数;他们只需要被调用而没有参数。
任何参数都有默认值的构造函数都满足此条件。
[class.dtor/1]:类 X 的默认构造函数是类 X 的构造函数,其中每个不是函数参数包的参数都有一个默认参数(包括没有参数的构造函数的情况)。[..]
struct Foo
{
Foo(int a = 0);
Foo(std::string str = "");
};
Run Code Online (Sandbox Code Playgroud)
现在,当然,在这个例子中,你不能Foo在不提供参数的情况下使用它们中的任何一个来实例化 a (调用会不明确)。但Foo仍然可用,而且这些仍然是“默认构造函数”。这就是标准决定对事物进行分类的方式,目的是定义规则。它不会真正影响您的代码或编程。
(顺便说一句,我不想分散注意力,但你应该同时拥有explicit这两点!)
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |