C++中的成员函数究竟代表了什么内存?据我所知,基本上有三种功能:C++对象实例成员函数内存表示
- 静态:这些被表示为任何其他全局函数
- 虚拟:这些可以通过虚表在运行时进行访问,以便执行动态调度。
非静态和非虚拟:我在这里遇到麻烦。大多数文章或解释说,它们只是以与正常函数在代码中相同的方式表示,唯一的区别是它们希望隐藏的“this”指针作为参数,以便能够访问实例的数据。但是,我不太清楚这是如何表现/实施的。举例来说,如果我有:
class A:
int var_a;
public:
int get_member_var_a(){
return var_a;
}
A(int init): var_a(init) {}
A* instance_of_a = new A(4);
现在,如果我叫
int tmp = instance_of_a->get_member_var_a();
是否OBJET A
的实例有一个指针在某处存储在内存中的功能get_member_var_a
,并简单地将调用函数,同时传递一个实例指针作为额外的参数?
去试试看python。经过几个例子(实际上是第一次)后,你会看到我为什么把你送到那里。 – bolov
我正在定期使用python ^^ – tomooka
这就是发生了什么:python中的成员函数是第一个参数是对象本身('__self__')的常规函数。在C++,java等中,这种机制是隐藏的。 – bolov