class Animal
{
public:
int a;
double d;
int f(){ return 25;}
};
假设对于上面的代码,我尝试初始化一个对象,通过说new Animal()
,这个new()
是否也为函数f()
分配内存?
换句话说,内存分配条款的差异,如果我改为使用此类并执行了new Animal()
?:
class Animal
{
public:
int a;
double d;
};
答案 0 :(得分:7)
对于没有虚函数的类,该函数本身不占用数据空间。函数是可以执行以操纵数据的代码段。它是必须分配的数据成员。
当你有一个虚拟类时,通常会有一个虚拟表的额外指针。请注意,vtable是特定于实现的细节。虽然大多数编译器都使用它们,但你不能指望它总是在那里。
我对你的另一个问题的答案expanded。
答案 1 :(得分:3)
没有。函数存在于文本页面中,因此没有为它们分配空间。