gpt4 book ai didi

c++ - C++中的两个复制构造函数调用有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:45 25 4
gpt4 key购买 nike

看下面的代码:

class Foo    
{
public:
Foo(){}
explicit Foo(const Foo &){}
};
int main()
{
Foo foo1;
Foo foo2(foo1);
Foo foo3 = foo1; //can not compile
return 0;
}

为什么Foo foo3 = foo1;编译不通过,这两种拷贝构造函数调用有什么区别?
ps:我的编译工具是GCC4.8.2

最佳答案

Foo foo2(foo1);direct initialization . Foo foo3 = foo1;copy initialization .它们的区别在于

Copy-initialization is less permissive than direct-initialization: explicit constructors are not converting constructors and are not considered for copy-initialization.

Foo 的复制构造函数声明为显式,在复制初始化时不考虑。

关于c++ - C++中的两个复制构造函数调用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51074133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com