class A {
};
//sizeof(A)大小为1
这里为什么是1?如果是0的话,在创建对象
A a;
int i;
时,i和a的地址相同,操作i的地址会影响a。所以,该值为1。
class A {
private:
int i;
};
//sizeof(A)大小为4
class A {
private:
int i;
char c;
int *pi;
};
//sizeof(A)大小为16
因为字节对齐的缘故,这里是16。
class A {
private:
int i;
static int j;
};
//sizeof(A)大小为4
类的大小与静态数据成员无关。
class A {
public:
A();
~A();
public:
void fun();
};
//sizeof(A)大小为1
类的大小与它的构造函数、析构函数以及其他成员函数无关。
class A {
public:
virtual void fun();
};
//sizeof(A)大小为8
class A {
public:
virtual void funA();
virtual void funB();
};
//sizeof(A)大小为8
当类中包含虚函数时,会有一个指向其虚函数表的指针vptr。即使有多个虚函数,也只有一个指向其虚函数表的指针vptr。
class A {
private:
int i;
};
class B: public A {
private:
int j;
};
//sizeof(A)大小为4
//sizeof(B)大小为8
类的大小为本身数据成员大小+基类数据成员大小。