С ++ позволяет создание экземпляра класса, устанавливая значение общественности членов группы с помощью списка инициализации, как показывает следующий пример для b1
:C++: как выполняется построение списка инициализации?
class B {
public:
int i;
std::string str;
};
B b1{ 42,"foo" };
B b2();
; однако, если я предоставил конструктор
B(int k) { }
, он не компилируется.
Итак, что происходит за капотом? Является ли это, когда конструктор не предусмотрен, компилятор предоставит один? Но как он может предоставить список инициализации? Я думал, что он просто предоставит «пустой» конструктор без ввода, как показывает пример для b2
. Или он обеспечивает оба?