- 对齐规则
- 虚继承
- 虚函数(多个合并)
- 静态变量
- 成员变量的大小

#include <iostream>
#include <cstddef>using namespace std;
class EmptyClass {
};
class charClass {char c;
};
class intClass {int a;
};
class charintClass {char c; int a;
};
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() {}
};
class Base {
private:int base_data;
};class Derived : public Base {
private:int derived_data;
};
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:int virtual_derived_data;char c;
};
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; int i; double d; short s;
};class OptimizedAlignment {
private:double d; int i; short s; char c1; char c2;
};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;
}