在OOP中,类方法的真正内部有效载荷是什么

时间:2019-03-29 20:54:11

标签: oop methods

我已经编程了几年,所以我对创建对象时方法的内部功能有疑问。

因此,当我们在POO中创建对象时,每个对象都有其自己的属性。但实际上它们都共享相同的方法,因此它在内部如何工作?方法是否在例如C ++中指向相同的地址,在这种情况下,如果我们考虑一个具有方法基调且没有属性的类,那么从该类创建很多对象的内存“有效载荷”是什么?

换句话说,程序是否为每个对象复制了所有方法的地址点,或者是否有其他内部功能可以使它们到达其方法?

1 个答案:

答案 0 :(得分:1)

不同的语言可以实现不同的实现。在C ++的情况下,想象编译器采用您的类方法并将其转换为自由函数。为了进行转换,将this添加为第一个参数。

C ++

class A
{
public:
    void f(bool b);

    // and other members
};

A a;
a.f(true);

转换为类似的内容

struct A
{
    // other members
}

void a_f(A* this, bool b);

A a;
a_f(&a, true);

因此,现在我们有了一个C程序,没有OOP可以与之混淆。