本文共 1154 字,大约阅读时间需要 3 分钟。
在C++编程中,类的大小计算是一个常见但容易引起混淆的问题。本文将通过一个实例详细分析类的大小计算规则,并探讨如何影响类的大小。
#includeusing std::cout;using std::endl;class Father {private: int age;public: void showAge() { cout << "Age: " << age << endl; }};class Mother {};class Son : public Father {};class Sister : public Father {private: static int a;};int main() { cout << "Size of int : " << sizeof(int) << endl; cout << "Size of Father: " << sizeof(Father) << endl; cout << "Size of Mother: " << sizeof(Mother) << endl; cout << "Size of Son : " << sizeof(Son) << endl; cout << "Size of Sister: " << sizeof(Sister) << endl; return 0;}
类的大小与方法无关
int的大小为4字节,Father类的大小也为4字节。Mother类为空类,大小为1字节。Son类继承自Father,大小仍为4字节。Sister类同样继承自Father,但添加了一个静态变量a,静态变量不占用类大小。空类的大小
继承与私有变量
Son和Sister包含父类Father的私有变量age,但子类的大小与父类相同。Sister类的静态变量a不会影响类的大小。将Father类中的showAge()改为虚函数:
class Father {private: int age;public: virtual void showAge() { cout << "Age: " << age << endl; }}; 此时,Father类的大小增加了4字节。这是因为虚函数引入了一个指向虚函数表的指针,大小为4字节。
通过以上分析,可以清晰地理解C++类大小计算的规则及其影响。
转载地址:http://puodz.baihongyu.com/