当前位置: 首页 > news >正文

3-C++中类大小影响因素

  • 对齐规则
  • 虚继承
  • 虚函数(多个合并)
  • 静态变量
  • 成员变量的大小
    类大小影响因素
#include <iostream>
#include <cstddef>using namespace std;// 空类 
class EmptyClass {
};// char
class charClass {char c;	
};
// int
class intClass {int a;	
};// char+int
class charintClass {char c;	int a;	
};// int+double
class intdoubleClass {	int a;	double d;
};// 只有静态成员和函数
class StaticMemberClass {
private:static int static_var;    // 不影响类大小int normal_var;           // 影响
public:static void static_func() {}  // 不影响void normal_func() {}         // 不影响
};
// 静态成员变量必须在类外定义
int StaticMemberClass::static_var = 0;// 有虚函数的类
class VirtualFunctionClass {
private:char c;public:virtual void virtual_func() {}    // 引入虚函数表指针void normal_func() {}
};// 4. 单继承
class Base {
private:int base_data;
};class Derived : public Base {
private:int derived_data;
};// 5. 多继承
class Base1 {
private:int base1_data;
};class Base2 {
private:int base2_data;
};class MultipleDerived : public Base1, public Base2 {
private:int derived_data;
};// 虚继承
class VirtualBase {
private:int virtual_base_data;
};class VirtualDerived : virtual public VirtualBase {
private://	vbtptr 虚基类表指针int virtual_derived_data;char c;// virtual_base_data
};// 包含虚函数的多继承
class BaseWithVirtual {
private:int base_data;
public:virtual void base_virtual() {}
};class AnotherBase {
private:int another_data;
};class ComplexDerived : public BaseWithVirtual, public AnotherBase {
private:int complex_data;
public:virtual void derived_virtual() {}
};// 测试内存对齐
class AlignmentTest {
private:char c;      // 1字节int i;       // 4字节double d;    // 8字节short s;     // 2字节
};class OptimizedAlignment {
private:double d;    // 8字节int i;       // 4字节short s;     // 2字节char c1;      // 1字节char c2;      // 1字节
};int main() {// 输出各平台相关信息cout << "=== 平台信息 ===" << endl;cout << "指针大小: " << sizeof(void*) << " 字节" << endl;cout << "int大小: " << sizeof(int) << " 字节" << endl;cout << "double大小: " << sizeof(double) << " 字节" << endl;cout << "=== C++类大小影响因素分析 ===" << endl;cout << "sizeof(EmptyClass): " << sizeof(EmptyClass) << " 字节" << endl;cout << "sizeof(charClass): " << sizeof(charClass) << " 字节" << endl;cout << "sizeof(intClass): " << sizeof(intClass) << " 字节" << endl;cout << "sizeof(charintClass): " << sizeof(charintClass) << " 字节" << endl;cout << "sizeof(intdoubleClass): " << sizeof(intdoubleClass) << " 字节" << endl;cout << "sizeof(StaticMemberClass): " << sizeof(StaticMemberClass) << " 字节" << endl;cout << "sizeof(VirtualFunctionClass): " << sizeof(VirtualFunctionClass) << " 字节" << endl;cout << endl;cout << "=== 继承对类大小的影响 ===" << endl;cout << "sizeof(Base): " << sizeof(Base) << " 字节" << endl;cout << "sizeof(Derived): " << sizeof(Derived) << " 字节" << endl;cout << "sizeof(Base1): " << sizeof(Base1) << " 字节" << endl;cout << "sizeof(Base2): " << sizeof(Base2) << " 字节" << endl;cout << "sizeof(MultipleDerived): " << sizeof(MultipleDerived) << " 字节" << endl;cout << endl;cout << "=== 虚继承对类大小的影响 ===" << endl;cout << "sizeof(VirtualBase): " << sizeof(VirtualBase) << " 字节" << endl;cout << "sizeof(VirtualDerived): " << sizeof(VirtualDerived) << " 字节" << endl;cout << endl;cout << "=== 虚函数在多继承中的影响 ===" << endl;cout << "sizeof(BaseWithVirtual): " << sizeof(BaseWithVirtual) << " 字节" << endl;cout << "sizeof(AnotherBase): " << sizeof(AnotherBase) << " 字节" << endl;cout << "sizeof(ComplexDerived): " << sizeof(ComplexDerived) << " 字节" << endl;cout << endl;cout << "=== 内存对齐的影响 ===" << endl;cout << "sizeof(AlignmentTest): " << sizeof(AlignmentTest) << " 字节" << endl;cout << "sizeof(OptimizedAlignment): " << sizeof(OptimizedAlignment) << " 字节" << endl;cout << endl;return 0;
}
http://www.dtcms.com/a/492417.html

相关文章:

  • 广州外贸网站公司新零售网络推广方案
  • mybatis返回map对象,在线程内将getkey值后赋值给stirng,会线程卡死问题
  • 【北邮-本科-通信原理】第五章关于HDB3编码的C++实现
  • 酒类网站建设方案案酷玛网站建设
  • 晋江网站建设联系电话销售渠道都有哪些
  • 商务网站建设策划书2000字做汽车团购的网站有哪些
  • 网站的域名空间思茅网站建设
  • 定西市网站建设企业wordpress网站缩
  • 黑河做网站公司wordpress标签管理系统
  • RunnableParallel
  • 做网站要学什么c语言如何在手机上运行wordpress
  • 建设农产品网站总结ppt三明市建设局网站
  • 好的网站建设哪家好随州网站建设价格
  • 可信验证网站深圳高端网站设计公司
  • 深入理解 Rust 的类型系统:内存布局、Trait 与类型推理
  • how to Disable SMPL(Sudden Momentary Power Loss) feature
  • 性能测试实战:JMeter全攻略
  • 淘宝客网站建设视频教程制作企业网站的
  • Furtherance,一个隐私友好的时间追踪工具
  • 网站开发和设计人员的岗位要求个人网站做论坛
  • 网站开发工程师基础centos7更新Wordpress
  • 网站建设要托管服务器百度大全下载
  • 刷链接浏览量网站建筑工程 网络图
  • 玉环做网站找那家公司网站备案账号是什么样的
  • Redis 如何设置密码及验证密码?
  • HTTPS 的加密流程
  • 有什么知名网站是用织梦做的响应式网站制作价格
  • 企业营销型网站的内容wordpress停用react
  • 网站为什么要续费seo是什么意思的缩写
  • C++二叉搜索树,AVL树与红黑树