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

C++ protected declaration in constructor

本文关键字:保护 声明 C++ 构造函数      更新时间:2023-10-16

我正在努力理解以下代码在做什么以及为什么:

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

我试图理解的部分是":m_description(aDescription){}",我不明白它在声明什么。

来自Olivianeacsu 的代码

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

这比在构造函数体中写入m_description = aDescription更可取,因为首先,m_description可以是const,并且该成员类型不需要默认构造函数。

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