小编J.D*_*Doe的帖子

C++中两个复制构造函数调用之间的区别是什么?

请看以下代码:

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

为什么Foo foo3 = foo1;无法编译,两个复制构造函数调用之间有什么区别?
ps:我的编译器工具是GCC4.8.2

c++ initialization

5
推荐指数
1
解决办法
80
查看次数

两个初始化有什么区别:Foo f(); Foo f = Foo()

class Foo
{
public:
    Foo(){}
private:
    Foo(const Foo &);
};

Foo f();
Foo f1 = Foo();
Run Code Online (Sandbox Code Playgroud)

我发现当我Foo(const Foo &)向私人宣布时,Foo f1 = Foo();不会编译.所以我认为Foo f1 = Foo(); 只是调用复制构造函数,但当我将我的代码更改为:

class Foo
{
public:
    Foo(){}
    Foo(const Foo &){std::cout<<"Foo(const Foo &)";}

};

Foo f();
Foo f1 = Foo();
Run Code Online (Sandbox Code Playgroud)

它没有打印任何东西.那么两个初始化有什么区别:Foo f(); Foo f = Foo()

c++

1
推荐指数
1
解决办法
104
查看次数

标签 统计

c++ ×2

initialization ×1