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 //多重继承
虚多重继承:
相关文章推荐
- C++中 没有数据成员的类的对象所占的内存空间大小问题
- c++带有虚函数的对象的大小问题
- c++中类对象分配内存大小与虚继承的一些问题
- 【深入探索c++对象模型】类对象所需内存大小讨论续写
- C++中用函数返回值初始类对象时的一个问题
- 小问题大思考之C++临时对象
- C++中一个类对象占用的内存空间大小
- C++继承、虚继承、虚函数类的大小问题
- C++对象内存分配问题
- Data语意学之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
- 关于C++对象模型的经典问题
- 关于C++项目指针对象未被初始化的问题(0xcdcdcd)
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- 浅谈C++变量(对象)初始化问题
- QML与c++交互学习笔记(六) 关于qt c++中创建对象,QML获取此对象数据问题
- C++中类对象所占空间的大小
- c++对象成员函数返回自身引用时出现的诡异问题及解决办法
- C++接口定义,实现,继承接口类的子类,实例对象访问方法问题
- C++ memset 类对象 crash(core) 的问题
- C++中空类和空结构体大小的问题?