次のようなクラスがあるとします。
class Foo {
public:
Foo(int);
Foo(const Foo&);
Foo& operator=(int);
private:
// ...
};
これらの 2 つの行はまったく同じですか、それとも微妙な違いがありますか?
Foo f(42);
Foo f = 42;
編集:元の質問で Foo コンストラクターを「明示的」にすることで、問題を混乱させました。私はそれを削除しましたが、回答に感謝します。
また、コピーが簡単な操作ではないことを明確にするために、コピー コンストラクターの宣言も追加しました。
私が本当に知りたいのは、C++ 標準によると、「Foo f = 42」は Foo(int) コンストラクターを直接呼び出すのか、それともコピー コンストラクターが呼び出されるのかということです。
fasih.ahmed には私が探していた答えがあるようです (間違っていない限り)。