C++是一种可以操作内存的编程语言,虽然说类对象的内存布局会随着编译器以及运行环境的影响而受到变化。但是通过一些简单的分析还是可以加深自己对语言本身的理解。
我们来看几种情况:读者可以不看下面的具体分析,只是询问一下自己,它们的大小,你知道吗?
- 没有任何数据成员的类
- 只有成员函数但没有数据成员的类
- 拥有一个整形数的类
- 拥有一个整形和字符整形(char)的类
- 带有虚函数的类
- 继承拥有虚函数父类的子类
先贴代码:
#include <iostream>
#include <string>
class Foo
{
};
class FooWithFunction
{
};
class FooWithInt
{
int i;
};
class FooWithIntChar
{
int i;
char c;
};
class Test
{
public:
virtual void foo() {}
};
class Derived : public Test
{
public:
virtual void derivedFoo() {}
};
int main()
{
std::cout << "Foo size: \t\t\t" << sizeof(Foo) << std::endl;
std::cout << "FooWithFunction size: \t\t" << sizeof(FooWithFunction) << std::endl;
std::cout << "FooWithInt size: \t\t" << siz