Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OOP中,类的方法的真正内部负载是什么_Oop_Methods - Fatal编程技术网

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

在OOP中,类的方法的真正内部负载是什么,oop,methods,Oop,Methods,我已经编写了几年的程序,我有一个关于创建对象时方法的内部功能的问题 所以当我们在POO中创建对象时,每个对象都有自己的属性。但事实上,它们都使用相同的方法,那么它在内部是如何工作的呢?方法是否指向C++中的相同地址,在这种情况下,如果我们考虑一类带有方法和属性的色调,那么从该类中创建大量对象的内存“有效载荷”是什么? 换句话说,程序是否复制每个对象的所有方法的地址点,或者是否有任何其他内部功能使它们达到其方法?不同的语言可以以不同的方式实现这一点。在C++的情况下,假设编译器占用类方法并将它们转

我已经编写了几年的程序,我有一个关于创建对象时方法的内部功能的问题

所以当我们在POO中创建对象时,每个对象都有自己的属性。但事实上,它们都使用相同的方法,那么它在内部是如何工作的呢?方法是否指向C++中的相同地址,在这种情况下,如果我们考虑一类带有方法和属性的色调,那么从该类中创建大量对象的内存“有效载荷”是什么?


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

不同的语言可以以不同的方式实现这一点。在C++的情况下,假设编译器占用类方法并将它们转换为自由函数。对于转换,它添加
作为第一个参数

C++

转换为类似于:

struct A
{
    // other members
}

void a_f(A* this, bool b);

A a;
a_f(&a, true);

现在我们有了一个
C
程序,没有什么OOP可以混淆。

好的,太好了!另一个线索可能是一种只包含方法的单例(一个主类),类似于对所有对象上的主类的引用,但我们接近于您在这里所表达的内容。多谢各位
struct A
{
    // other members
}

void a_f(A* this, bool b);

A a;
a_f(&a, true);