从非空基类继承的空派生类
Empty Derived Class inherited from Non-Empty Base Class
class Base
{
int i ;
};
class Derived : public Base { } ;
int main()
{
cout << sizeof(Derived);
}
Output :
4
在基类中,由于i是私有的,它不应该继承到派生类。因此,基类应该充当空类。而空类的大小是 1 ,那么为什么它显示为 4 ?
Derived
类仍然包含i
Base
,它只是无法访问,所以大小 4 是因为i
大小仍然是 4,因为 Base
的大小是 4。例如,假设Base
有一个函数 public:
int getI() {return i;}
然后你可以调用Derived::getI()
,因此派生确实需要包括私有基础成员。
这里,派生类是公开定义的.. 在定义中的意思是": public base">
因此,派生类可以访问基类的所有公共和私有成员。它将使该派生类中的所有私有成员公开。因此输出是 i.not 1 的 4 coz.如果你写私有,那么它将给出输出 1..
相关文章:
- 如何通过派生类函数更改基类中的向量
- 如何使用基类指针引用派生类成员
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何引用基类的派生类?
- 如果基类包含双指针成员,则派生类的构造函数
- 为什么此派生对象无法访问基类的后递减方法?
- 使用基类中的派生方法运行线程,而无需使用模板
- 是否可以使用基类非虚拟方法中的派生类虚拟方法?
- C++重载函数,一个采用基类的参数,另一个采用派生类的参数
- 在派生类中使用基类的私有成员变量的最佳方法
- 基类和派生类的多态赋值运算符
- 如何在从抽象基派生的类中实现相同的方法?
- 基类的填充将被复制到派生类中
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- 指向基类派生类的 std::unique_ptr 的指针
- 为什么基类数据在派生类数据之前初始化
- c++ 派生基类 Friend 函数访问父级上的私有函数
- 如何将基类替换为派生基类
- 当基类未指定构造函数时,如何使用仅具有带参数的构造函数的类派生基类?
- 解析公用派生基类模板中的函数模板名称时出错"Not declared in this scope"