new()是否也为类的函数分配内存?

Moe*_*oeb 5 c++ memory-management object new-operator

class Animal
{
public:
  int a;
  double d;
  int f(){ return 25;} 
};
Run Code Online (Sandbox Code Playgroud)

假设对于上面的代码,我尝试初始化一个对象,通过说new Animal(),这是否new()也为函数分配内存f()

换句话说,如果我有这个类而不是内存分配术语有什么不同new Animal():

class Animal
{
public:
  int a;
  double d;
};
Run Code Online (Sandbox Code Playgroud)

GMa*_*ckG 7

对于没有虚函数的类,该函数本身不占用数据空间.函数是可以执行以操纵数据的代码段.它是必须分配的数据成员.

当你有一个虚拟类时,通常会有一个额外的虚拟表指针.请注意,vtable是特定于实现的细节.虽然大多数编译器都使用它们,但你不能指望它总是在那里.

我在你的另一个问题上扩展了这个答案.


Ign*_*ams 4

不会。函数存在于文本页中,因此没有为其分配空间。