C++ 默认构造函数和默认参数构造函数如何在cpp中引起歧义?
默认构造函数和deafult参数构造函数之间有什么区别?举个例子会很有帮助我想你的意思是这样的:C++ 默认构造函数和默认参数构造函数如何在cpp中引起歧义?,c++,C++,默认构造函数和deafult参数构造函数之间有什么区别?举个例子会很有帮助我想你的意思是这样的: struct foo { foo(int x = 1) {} foo() {} }; A是一个可以不用争论就调用的函数(我想这是你误解的)。上面的两个构造函数都是默认构造函数。它们都可以在没有参数的情况下调用,也可以在通过调用构造函数时调用 foo f; 两者都是可行的,编译器无法解决歧义。所有参数都有默认值的构造函数也是类的默认构造函数 struct Foo { Foo
struct foo {
foo(int x = 1) {}
foo() {}
};
A是一个可以不用争论就调用的函数(我想这是你误解的)。上面的两个构造函数都是默认构造函数。它们都可以在没有参数的情况下调用,也可以在通过调用构造函数时调用
foo f;
两者都是可行的,编译器无法解决歧义。所有参数都有默认值的构造函数也是类的默认构造函数
struct Foo
{
Foo() = default;
Foo(int = 0){};
};
int main() {
Foo f;
}
将不会编译,因为有两个候选默认构造函数,因此重载解析将失败。(请注意,
Foo f(1);
将编译,因为重载解析不再含糊不清。)什么是“默认参数构造函数”?@idclev我认为类似于void Foo()之间的区别代码>和无效foo(int bar=1)代码>@joonayonA()
声明一个返回a
@joonayon的函数,它声明一个名为a
的函数,该函数返回a
@idclev46305818 OMG。非常感谢。我有时使用它,但它第一次得到错误消息。但我不能按系统编辑以上错误评论。很抱歉。我不会删除对我来说是好历史的评论。thx.@YatharthKumar,因为只有一个默认构造函数。拥有不止一个是uncommon@YatharthKumar是的,两个都可以保留,当你提供参数时可以调用第一个,但是你不能在没有参数的情况下调用任何一个,因为它们是不明确的。如果你有一些代码的问题,我只能在看到代码后帮你。也许你想提出一个新问题来询问你的实际问题。请不要将此问题更改为询问其他问题,因为当前答案按原样回答问题