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

When is the memory space for a member function of a class in C++ allocated?

本文关键字:函数 内存 空间 成员 何时 C++ 分配      更新时间:2023-10-16

在阅读时,我读到了这些关于C++中类成员函数的内存分配的相互矛盾的陈述。一位消息人士称,该空间是根据内存堆栈的需要分配给成员函数的。而另一个说空间是在创建该类的第一个对象时分配的。

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

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

什么记忆?需要内存来存储实际(编译的代码)和变量(数据)的内存。因此,您的两个答案都是正确的。

成员函数不增加类对象的内存使用,除非如果类具有虚函数,则它会保留指向虚函数表的指针。

与任何函数一样,如果无法访问程序中的函数,则成员函数可以没有定义。否则,链接器将发出错误,指出对函数的引用未定义。

编译器为成员函数生成代码的方式

与为非成员函数生成代码的方式相同。所以如果有成员函数的定义,编译器什么时候会生成相应的代码。

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