看看Stanley是怎么说的
One C++ design criterion is that a nonstatic member function at a minimum must be as efficient as its analogous nonmember function
This is achieved by internally transforming the member instance into the equivalent nonmember instance.
出于效率的考虑,编译器把成员函数转换成对等的非成员函数实体,也可以说,成员函数和普通函数是一回事,只是参数传递规则不同。
至于空间应该不会在调用的时候才分配,我编程这么久还没有遇到一般的调用函数时CALL指令不是采用立即寻址的,CALL指令当然也可以才用其他寻址方式,比如你通过函数指针访问函数,但是一般的函数调用都是立即寻址,如果你的空间不是先分配好,你立即寻址的地址从那里来?
1.一个class 含有很多函数,但是实际只用了几个,没用到的函数系统还会为它们分配内存吗?
2.如果new 多个该class的对象,设为a b c ...,系统要分别为a b c ...中的函数分配内存吗?
~~~~~~~~~~~
简单的说,一个class无论有多少个对象,他的成员函数都会在代码区都是唯一,只有在调用此函数时,函数才会从栈上申请变量空间,进行函数操作。
所以函数本身只会在代码区分配唯一的内存。