скажем, у меня std::map< std::string, std::string > m_someMap
как частная переменная-член класса A
Два вопроса: (и единственная причина, по которой я спрашиваю, это то, что я наткнулся на такой код)
Какова цель этой строки:
A::A() : m_someMap()
Теперь я знаю, что это инициализация, но нужно ли это делать вот так? Я смущен.
Какое значение по умолчанию для
std::map< std::string, std::string > m_someMap
, также C # определяет, что int, double и т. Д. Всегда инициализируются значением по умолчанию 0, а объекты имеют значение null (по крайней мере, в большинстве случаев). Итак, какое правило в C ++ ?? объект инициализируется по умолчанию нулевым значением, а примитивы - мусором? Конечно, я говорю о переменных экземпляра.
РЕДАКТИРОВАТЬ:
кроме того, поскольку большинство людей отметили, что это выбор стиля и не является обязательным, как насчет:
A :: A (): m_someMap (), m_someint (0), m_somebool (ложь)