C++ 类的虚函数\虚继承所占的空间

发表于:2014-4-22 10:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Spike_King    来源:51Testing软件测试网采编

  char占用一个字节, 但不满足4的倍数时, 会进行数据对齐, 使用4的倍数的字节(byte).
  无论是虚函数还是虚继承, 都需要将指针存储在虚函数表(virtual function table), 占用4个字节.
  继承会继承基类的数据, 和虚函数表, 即继承基类的空间.
  代码:
/*
* test.cpp
*
*  Created on: 2014.04.20
*      Author: Spike
*/
/*eclipse cdt, gcc 4.8.1*/
#include <iostream>
using namespace std;
class A {
char k[5];
public:
virtual void aa() {};
};
class B : virtual public A {
char j[6];
public:
virtual void bb() {};
};
class C : virtual public B {
char i[7];
public:
virtual void cc() {};
};
int main() {
std::cout << "sizeof(A) = " << sizeof(A) << std::endl;
std::cout << "sizeof(B) = " << sizeof(B) << std::endl;
std::cout << "sizeof(C) = " << sizeof(C) << std::endl;
return 0;
}
  输出:
sizeof(A) = 12
sizeof(B) = 24
sizeof(C) = 36
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号