您的位置:首页 > 编程语言 > C语言/C++

C++中对象大小的问题

2012-06-13 18:06 232 查看

总结:

1) 类的所有对象都指向一个虚函数表, 也就是说虚函数表是由类来维护的, 在编译的时候就已经确定了

2) 对象的大小,

2.1) 当类中没有虚函数时,并没有一个指针指向虚函数表, 只有当有虚函数的时候才有指针。

2.2) 当类中有静态变量时, 对象的大小不会因为静态变量的而改变, 静态变量并不在对象中

2.3) 对象中只会有非静态的成员变量, 包括本身的和父类的

2.4)内存对齐的问题

例子:

class test{

};

class Base1{

public:

Base1(){};

~Base1(){};

static int test1;

int test2;

virtual void testfunc2(){};

};

class Base2{

public:

static int test1;

int test2;

virtual void testfunc2(){};

};

class Derive1:public Base1{

public:

int test;

virtual void s() {};

};

class multiDerive: public Base1, Base2{

};

int _tmain(int argc, _TCHAR* argv[])

{

test a;

Base1 obj;

Derive1 der;

multiDerive multiobj;

std::cout<< sizeof(a) <<std::endl;

std::cout<< sizeof(obj) <<std::endl;

std::cout<< sizeof(der) <<std::endl;

std::cout<< sizeof(multiobj) <<std::endl;

}

输出:(64位环境)

1

16

24

32 //多重继承

虚多重继承:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: