如果没有虚函数,则类的大小等于成员变量所占的空间,不论有多少个函数都不会占用类的空间。
class A {
private:
int32_t i = 0; // size = 4;
int32_t j = 0; // size = 8;
int plus (int a, int b) { return a+b;}
void change_i (int a, int b) { i = a+b;}
public:
A() = default;
~A();
};
int main() {
std::cout << sizeof(A) << std::endl;
return 0;
}
//g++ test.cpp -o test
但是如果类里面有虚函数,则虚函数本身会占用类8字节的大小,且类大小至少以8字节的大小递增。如下图所示,即使只多了一个大小为4字节的成员变量,类的大小仍然从8字节增加到16字节:
class A {
private:
int32_t i = 0; // size = 16;
virtual int plus (int a, int b) = 0;
public:
A() = default;
~A();
};
int main() {
std::cout << sizeof(A) << std::endl;
return 0;
}
//g++ test.cpp -o test