为什么功能失重?

The*_* do -4 c++

为什么在我的班级有功能不会改变这个班级的大小?这些信息必须存储在某个地方,但在哪里?

Jam*_*lis 9

您可以将成员函数视为与任何其他函数一样,除了它有一个额外的隐藏参数,该参数接受指向调用成员函数的实例的指针.

例如,这个:

class C
{
    void f(int i) { }
};
Run Code Online (Sandbox Code Playgroud)

可能会(至少在概念上)实施为:

void C_f(C* this, int i) { }
Run Code Online (Sandbox Code Playgroud)

如果它是const成员函数,则隐藏参数将具有该类型const C*.请注意,虚拟成员函数的情况并非如此简单.

  • @Knowing:这里不需要打电话.这既粗鲁又不专业. (9认同)