C ++中类的成员函数的内存空间何时分配?

时间:2014-02-25 12:56:27

标签: c++ function class memory-management

在阅读时,我阅读了关于C ++中Classes成员函数的内存分配的这些相互矛盾的陈述。 一个消息来源表示,根据需要从存储器堆栈为成员函数分配空间。 而另一个表示在创建该类的第一个对象时分配空间。

另一方面,我认为成员函数的空间是在编译期间或运行时本身的开始时分配的,然后函数代码将被该类的所有对象使用。

有人可以澄清并详细说明吗? 感谢。

2 个答案:

答案 0 :(得分:0)

记忆力是什么?存储变量(Data)的实际(编译代码)和内存需要内存。因此,你的答案都是正确的。

答案 1 :(得分:0)

成员函数对类对象的内存使用没有贡献,除非一个类具有虚函数,那么它保留一个指向虚函数表的指针。

如果程序中没有对该函数的访问权限,则任何函数都不能定义成员函数。否则,链接器将发出错误,指出函数的引用未定义。

编译器为成员函数生成代码的方式与非成员函数相同。因此,如果编译器生成相应的代码时存在成员函数的定义。

我认为你的意思是模板类的成员函数,如果使用它们,它们确实会被实例化。