Właśnie dowiedziałem się wczoraj, że określanie parametrów elementów listy inicjalizatora jest opcjonalne. Jakie zasady obowiązują w tym przypadku?Wartości domyślne na listach inicjalizujących C++
W poniższym przykładzie, czy ptr zostanie zainicjowane na 0, przełączyć na false, a Bar domyślnie skonstruować? Domyślam się, że to pytanie jest zbyteczne, ponieważ lista inicjalizatorów nie miałaby sensu, gdyby nieokreślone wartości argumentów == niezdefiniowane zachowanie.
Czy można również wskazać na sekcję standardu C++, która określa zachowanie w przypadku, gdy pozycje listy inicjalizacyjnej nie mają argumentów?
class Bar
{
Bar() { }
};
class SomeClass;
class AnotherClass
{
public:
SomeClass *ptr;
bool toggle;
Bar bar;
AnotherClass() : ptr(), toggle(), bar() { }
// as opposed to...
// AnotherClass() : ptr(NULL), toggle(false), bar(Bar()) { }
};
Możliwy duplikat [listy inicjalizacyjnej konstruktora z pustą inicjalizacją] (https://stackoverflow.com/questions/11164394/constructor-initialization-list-with-empty-initialization) – Justin