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

标签 c++ class constructor declaration protected

<分区>

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

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 必须被继承。

关于构造函数中的 C++ 保护声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36719450/

相关文章:

c++ - 我可以将 move 的变量标记为不再可用,并在使用它时收到编译器警告吗?

python - 如何将数据从一个类传递给另一个函数(在 HTMLParser 中)?

c - 有没有不是C++的 "C with classes"语言?

c++ - 继承,为什么要为基类调用两个构造函数,C++

javascript - JS - 属性名称访问

c++ - 在主循环外绘制背景时闪烁

c++ - 无法增加静态变量

C++ 内存表

java - 在类层次结构中设置变量

c++ - 无法初始化类成员?