c – “结构默认具有公共继承”

前端之家收集整理的这篇文章主要介绍了c – “结构默认具有公共继承”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
“一个结构体默认具有公共继承”这句话的真正含义是什么?为什么下面的代码出错只是因为我在从c ??派生类d时省略了关键字’public’.
struct c 
{
protected:
    int i;
public:
    c(int ii=0):i(ii){} 
    virtual c *fun();
};

c* c::fun(){
    cout<<"in c";
    return &c();
}

class d : c
{  
public:
    d(){}
    d* fun()
    {
        i = 9;
        cout<<"in d"<<'\t'<<i;
        return &d();
    }
};


int main()
{
    c *cc;
    d dd;
    cc = &dd;
    cc->fun();
}

解决方法

这意味着
struct c;
struct d : c

相当于

struct d : public c

您的代码是一个扩展结构的类:

struct c;
class d : c;

相当于

class d : private c;

因为默认情况下类具有私有继承.

这意味着c中所有继承而非覆盖/重载/隐藏的方法都是私有的.

猜你在找的C&C++相关文章