构造函数中的C ++保护声明

时间:2016-04-19 13:09:48

标签: c++ class constructor declaration protected

我试图了解以下代码的作用以及原因:

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

我试图理解的部分是“:m_description(aDescription){}”我不明白这是什么声明。

来自Olivianeacsu的代码

1 个答案:

答案 0 :(得分:1)

:m_description(aDescription)正在初始化成员m_description

这是在构造函数体中编写m_description = aDescription的首选,因为有一点,m_description可以是const,并且该成员类型不需要默认构造函数。

构造函数为protected这一事实意味着只能从基类调用它。编译器也不会在此实例中生成默认构造函数,因此这意味着必须继承Beverage