【问题标题】:c++ inheritance visibility modec++继承可见性模式
【发布时间】:2013-10-19 10:52:37
【问题描述】:

继承过程中类的默认可见模式是什么 (这里是 D@ 班的 B)

class B {
public:
    int key;
    B(void) { key = 0; printf("B constructed\n");}
    virtual void Tell(void);
    ~B(void) {cout <<"B destroyed"<<endl << endl;}
};


class D2 : B {
public:
    void Tell(void) { printf("D2 Here\n"); }
};

【问题讨论】:

标签: c++ inheritance


【解决方案1】:

使用class时默认为private,使用struct时默认为public

所以这个:

class D2 : B {

等价于

class D2 : private B {
private:

还有这个:

struct D2 : B {

相当于

struct D2 : public B {
public:

【讨论】:

  • private: in class body 和 public: in struct body 是不必要的,因为它是默认的
  • @piotruś 您是否阅读了这个问题,是否意识到我试图展示默认值?当然,我必须重复多余的东西来证明这一点!
  • OP 询问默认继承模式是什么,所以如果 class A : B 相当于 class A : public B 或者可能 class A : private B 或其他任何东西。类定义中的默认限定符是另一个问题,但我同意也建议提及
猜你喜欢
  • 2017-04-29
  • 2012-06-17
  • 2012-10-14
  • 2011-03-03
  • 2020-02-11
  • 2020-01-01
  • 2020-02-07
  • 2020-01-22
  • 2010-12-06
相关资源
最近更新 更多