C++ 单继承

黎 浩然/ 7 5 月, 2022/ C/C++, 计算机/COMPUTER/ 0 comments

/**
* @file geninhe.cpp
* @brief 普通单继承,继承就是基类+派生类自身的大小(注意字节对齐)
* 注意:类的数据成员按声明顺序加入内存,与访问权限无关,只看声明顺序 * @author Ernest
* @version v1
* @date 2019-07-21
*/
#include<iostream>
using namespace std;
class A {
public:
    char a;
    int b; 
};

/**
  * @brief 此时B按照顺序:
  * char a
  * int b
  * short a
  * long b
  * 根据字节对齐4+4=8+8+8=24 
  */
class B:A {
public:
    short a;
    long b; 
};

class C { 
    A a;
    char c; 
};

class A1 {
    virtual void fun(){}
};

class C1:public A1 {};

int main() {
    cout<<sizeof(A)<<endl; // 8
    cout<<sizeof(B)<<endl; // 24
    cout<<sizeof(C)<<endl; // 12,实例对齐到其最大的成员,即为4个字节 
    /*
     * @brief 默认对于单继承,派生类也继承了基类的vptr,所以是8字节
     */
    cout<<sizeof(C1)<<endl; // 8
    return 0;
}
//8
//24
//12
//8

单继承中,子类也只有一个虚函数表指针!

Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*