Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 默认构造函数和默认参数构造函数如何在cpp中引起歧义?_C++ - Fatal编程技术网

C++ 默认构造函数和默认参数构造函数如何在cpp中引起歧义?

C++ 默认构造函数和默认参数构造函数如何在cpp中引起歧义?,c++,C++,默认构造函数和deafult参数构造函数之间有什么区别?举个例子会很有帮助我想你的意思是这样的: struct foo { foo(int x = 1) {} foo() {} }; A是一个可以不用争论就调用的函数(我想这是你误解的)。上面的两个构造函数都是默认构造函数。它们都可以在没有参数的情况下调用,也可以在通过调用构造函数时调用 foo f; 两者都是可行的,编译器无法解决歧义。所有参数都有默认值的构造函数也是类的默认构造函数 struct Foo { Foo

默认构造函数和deafult参数构造函数之间有什么区别?举个例子会很有帮助

我想你的意思是这样的:

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)@joonayon
A()
声明一个返回
a
@joonayon的函数,它声明一个名为
a
的函数,该函数返回
a
@idclev46305818 OMG。非常感谢。我有时使用它,但它第一次得到错误消息。但我不能按系统编辑以上错误评论。很抱歉。我不会删除对我来说是好历史的评论。thx.@YatharthKumar,因为只有一个默认构造函数。拥有不止一个是uncommon@YatharthKumar是的,两个都可以保留,当你提供参数时可以调用第一个,但是你不能在没有参数的情况下调用任何一个,因为它们是不明确的。如果你有一些代码的问题,我只能在看到代码后帮你。也许你想提出一个新问题来询问你的实际问题。请不要将此问题更改为询问其他问题,因为当前答案按原样回答问题