假设有这样一个类:
class Foo {
public:
Foo(int);
Foo(const Foo&);
Foo& operator=(int);
private:
// ...
};
这两行代码是完全等价的,还是存在微小的差异?
Foo f(42);
Foo f = 42;
编辑:我在原来的问题中使Foo构造函数“explicit”,混淆了问题。我已经删除了它,但感谢回答。我还添加了一个复制构造函数的声明,以明确复制可能不是一个简单的操作。
我真正想知道的是,根据C++标准,“Foo f=42”会直接调用Foo(int)构造函数,还是复制构造函数会被调用?
看起来fasih.ahmed给出了我要找的答案(除非它是错误的)。