继续问复制控制
一个非常简单的程序如下:
#include <iostream>
using namespace std;
class Foo {
public:
Foo(int i) { cout < < "using int. done. " < < endl; }
~Foo() { cout < < "deleting. done. " < < endl; }
//private:
Foo(const Foo &f) { cout < < "using copying. done. " < < endl; }
};
int main() {
Foo f = 100;
return 0;
}
运行结果为:
using int. done.
deleting. done.
分析Foo f = 100这句,应该是先调用Foo(int)来构造临时对象,再调用拷贝构造函数Foo(const Foo &f)来构造f,然后再删除临时对象。
但奇怪的是:拷贝构造函数Foo(const Foo &f)似乎并没有被调用,析构函数也只被调用了一次;而如果将Foo(const Foo &f)设为private,则不能编译。
谁能解释一下?谢谢
[解决办法]
------
将Foo(const Foo &f)设为private,则不能编译。
---------
are u sure???
[解决办法]
Foo f = 100;
等於
Foo f(100);
[解决办法]
分析Foo f = 100这句,应该是先调用Foo(int)来构造临时对象,再调用拷贝构造函数Foo(const Foo &f)来构造f,然后再删除临时对象。
============================================
理论上,是这样的执行
[解决办法]
Foo f = 100;
等於
Foo f(100);
[解决办法]
同意zhousqy(标准C匪徒)(甩拉,甩拉)
[解决办法]
execptional C++ item42
[解决办法]
有个帖子,回家找找看看
[解决办法]
Foo f = 100;
等於
Foo f(100);
是这样吗?
[解决办法]
楼上的是翻译还是自己写的,乱七八糟的.