一个类只声明,但是没有实例化,会占用空间吗?成员函数是否分配空间?
我明白,对象在实例化时分配空间,但是成员函数并不占对象的空间呀。是所有对象共有的呀。
所以我如果仅仅声明了类,但是没有实例化,会为这个类分配空间吗?即会为这个类的成员函数分配内存吗?
在哪里分配呢?

解决方案 »

  1.   

    不会,
    不会
    具体的看inside c++ object model
      

  2.   

    不分配空间,机器如何识别? sizeof(EmptyClass) == 1。XP86 上测得的结果,其它的就不得而知了。
      

  3.   

    sizeof操作符是在编译时有编译器计算出的吧,在处理过后只是一个常数而已
      

  4.   

    静态的类成员实际就是个带作用域的静态变量,跟函数里声明的静态变量没有本质区别。所以定义出来肯定是会占空间的。
    非虚的成员函数实际也就是个带作用域的函数,跟普通函数也没本质区别,就是有个this指针的操作。
    虚函数比非虚的多一点的是:它还有个指针放在虚表里,这个类的所有实例共享同一个虚表,虚表也是占空间的。不用的函数一般会被编译器干掉的,比如说在build release版本的时候,会提示某个函数没用到,被干掉了(要警告全开才能看到)。
    同理用不到的变量、成员函数,甚至虚表都会被优化掉(比如这个类根本没被用到过)。现在的编译器还是很NB的。很多问题还是交给编译器考虑吧。