C++ 单继承
/**
* @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
单继承中,子类也只有一个虚函数表指针!