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

时间:2010-01-19 06:15:23

标签: c++ object memory-management new-operator

class Animal
{
public:
  int a;
  double d;
  int f(){ return 25;} 
};

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

换句话说,内存分配条款的差异,如果我改为使用此类并执行了new Animal()

class Animal
{
public:
  int a;
  double d;
};

2 个答案:

答案 0 :(得分:7)

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

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

我对你的另一个问题的答案expanded

答案 1 :(得分:3)

没有。函数存在于文本页面中,因此没有为它们分配空间。