【问题标题】:C++ protected declaration in constructor [duplicate]构造函数中的 C++ 保护声明 [重复]
【发布时间】:2016-08-11 16:40:03
【问题描述】:

我试图了解以下代码在做什么以及为什么:

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

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

来自Olivianeacsu的代码

【问题讨论】:

  • @NathanOliver,我们是否应该以一个好的答案应该提到受保护的构造函数为由重新打开?
  • @Bathsheba 我认为这是切线的。 OP 特别声明他们不理解 :m_description(aDescription){} 部分。

标签: c++ class constructor declaration protected


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 2021-06-04
    • 2011-05-30
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多