给定这样一个类:
class Foo {
public:
Foo(int);
Foo(const Foo&);
Foo& operator=(int);
private:
// ...
};
这两行话完全等价吗,还是有微妙的不同之处?
Foo f(42);
Foo f = 42;
编辑:在原问题中我把Foo构造函数设为“显式”,这可能导致混淆。我已经删除了这一要求,但仍感谢大家的回答。
我也添加了一个复制构造函数的声明,以明确复制可能不是一个简单的操作。
我真正想知道的是,根据C++标准,“Foo f = 42”会直接调用Foo(int)构造函数,还是会调用复制构造函数?
看起来像是 fasih.ahmed 给出了我想要的答案(除非是错的)。