测试空类所占用的空间:
#include <QCoreApplication>
#include <iostream>
class A
{
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
A obj;
std::cout << sizeof(obj) << std::endl;
return a.exec();
}
测试结果:
1
原因分析:
对象都是有地址的,只要有内存地址,则至少占一个字节的空间。
测试只包含普通成员函数的类所占用的空间:
#include <QCoreApplication>
#include <iostream>
class A
{
public:
void func1(void);
protected:
void func2(void);
private:
void func3(void);
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
A obj;
std::cout << sizeof(obj) << std::endl;
return a.exec();
}
测试结果:
1
结论:
成员函数虽然写在类定义中,但成员函数不占用类对象的内存空间。
测试只包含静态成员函数的类所占用的空间:
#include <QCoreApplication>
#include <iostream>
class A
{
public:
static void func1(void);
protected:
static void func2(void);
private:
static void func3(void);
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
A obj;
std::cout << sizeof(obj) << std::endl;
return a.exec();
}
测试结果:
1
结论:
不管是静态成员函数还是普通成员函数,均不占用类对象的内存空间。