“默认情况下结构具有公共(public)继承”这句话的真正含义是什么?为什么下面的代码错误只是因为我在从 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 = ⅆ
cc->fun();
}
最佳答案
意思是
struct c;
struct d : c
相当于
struct d : public c
您的代码是一个类
,扩展了一个结构
:
struct c;
class d : c;
相当于
class d : private c;
因为 class
默认有私有(private)继承。
这意味着所有从 c
继承的而不是覆盖/重载/隐藏的方法在 d
中都是私有(private)的。
关于c++ - "a struct has public inheritance by default",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10473284/