一个类只声明,但是没有实例化,会占用空间吗?成员函数是否分配空间? 一个类只声明,但是没有实例化,会占用空间吗?成员函数是否分配空间?我明白,对象在实例化时分配空间,但是成员函数并不占对象的空间呀。是所有对象共有的呀。所以我如果仅仅声明了类,但是没有实例化,会为这个类分配空间吗?即会为这个类的成员函数分配内存吗?在哪里分配呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不会,不会具体的看inside c++ object model 不分配空间,机器如何识别? sizeof(EmptyClass) == 1。XP86 上测得的结果,其它的就不得而知了。 sizeof操作符是在编译时有编译器计算出的吧,在处理过后只是一个常数而已 静态的类成员实际就是个带作用域的静态变量,跟函数里声明的静态变量没有本质区别。所以定义出来肯定是会占空间的。非虚的成员函数实际也就是个带作用域的函数,跟普通函数也没本质区别,就是有个this指针的操作。虚函数比非虚的多一点的是:它还有个指针放在虚表里,这个类的所有实例共享同一个虚表,虚表也是占空间的。不用的函数一般会被编译器干掉的,比如说在build release版本的时候,会提示某个函数没用到,被干掉了(要警告全开才能看到)。同理用不到的变量、成员函数,甚至虚表都会被优化掉(比如这个类根本没被用到过)。现在的编译器还是很NB的。很多问题还是交给编译器考虑吧。 怎样用CRichEditView给大点的文件加颜色 我学了半年的c++,现在想学mfc,能提供一本比较好的书么?? 我注册了一个本窗口的热键,为什么到了其它窗口里仍然有效呢? 请教水晶报表的简单问题 InternetSetOption问题 保存在变量中的字符串怎样转化成Unicode? 怎样得到缺省打印机的名称 高分求助:关于串口接收的问题? mfc 绘图问题 求指导 求解算法? 生成迷宫 高手来:WNetOpenEnum 返回The network path was not found的奇怪问题讨论 关于子窗口显示的问题
不会
具体的看inside c++ object model
非虚的成员函数实际也就是个带作用域的函数,跟普通函数也没本质区别,就是有个this指针的操作。
虚函数比非虚的多一点的是:它还有个指针放在虚表里,这个类的所有实例共享同一个虚表,虚表也是占空间的。不用的函数一般会被编译器干掉的,比如说在build release版本的时候,会提示某个函数没用到,被干掉了(要警告全开才能看到)。
同理用不到的变量、成员函数,甚至虚表都会被优化掉(比如这个类根本没被用到过)。现在的编译器还是很NB的。很多问题还是交给编译器考虑吧。