2016-04-19 2 views
0

Я пытаюсь понять, что делает следующий код и почему:C++ защищенного объявления в конструкторе

class Beverage { 
    std::string m_description; 
protected: 
    Beverage(std::string aDescription):m_description(aDescription){} 

Часть Я пытаюсь понять это «: m_description (aDescription) {}» Я не» я понимаю, что это объявление.

код из Olivianeacsu

+0

@ NathanOliver, мы откроем снова на том основании, что в хорошем ответе должен упоминаться защищенный конструктор? – Bathsheba

+3

@ Батшеба Я думаю, что это касательная. OP конкретно заявляет, что они не понимают часть ': m_description (aDescription) {}'. – NathanOliver

ответ

1

:m_description(aDescription) инициализируется элемент m_description.

В корпусе конструктора предпочтительнее записать m_description = aDescription, так как в одном случае m_description может быть const, и этот тип элемента не требует конструктора по умолчанию.

Тот факт, что конструктор protected означает, что его можно вызывать только из базовых классов. Компилятор также не будет генерировать конструктор по умолчанию в этом случае, поэтому это означает, что Beverageдолжен быть унаследованным.

Смежные вопросы