Для класса, подобного этому:
class Foo {
public:
Foo(int);
Foo(const Foo&);
Foo& operator=(int);
private:
// ...
};
Являются ли эти две строки в точности эквивалентными или есть тонкая разница между ними?
Foo f(42);
Foo f = 42;
Изменить: я смутил вопросы, сделав конструктор Foo "явным" в исходном вопросе. Я удалил это, но ценю ответы.
Я также добавил объявление конструктора копии, чтобы было ясно, что копирование не может быть тривиальной операцией.
То, что я действительно хочу знать, согласно стандарту С++, будет "Foo f = 42" напрямую вызвать конструктор Foo (int), или будет вызван конструктор копирования?
Похоже на fasih.ahmed есть ответ, который я искал (если он не ошибается).