Почему мы различаем между копией и прямой инициализацией?
У меня есть следующие вопросы, и я надеюсь, что вы можете мне помочь. Код:
A a; //A(void) is called
A b(a); //A(const A&) is called: direct-initialization
A c = a; //A(const A&) is called: copy-initialization
Почему мы различаем эти инициализации?
1) A b(a);
2) A c = a;
Я думаю, что в этом случае оба одинаковы, потому что каждый раз вызывается конструктор копирования. Или мы отличаемся, потому что неявное преобразование может быть возможно в 2)?
Но я читал, что и в этом случае мы различаем инициализации:
3) int a(5);
4) int a = 5;
Почему эти разные инициализации? Заранее спасибо!