<分区>
我试图了解以下代码的作用及其原因:
class Beverage {
std::string m_description;
protected:
Beverage(std::string aDescription):m_description(aDescription){}
我试图理解的部分是“:m_description(aDescription){}”,我不明白它在声明什么。
代码来自 Olivianeacsu
<分区>
我试图了解以下代码的作用及其原因:
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/