в ООП какова реальная внутренняя полезность методов классов - PullRequest
0 голосов
/ 29 марта 2019

Я программирую уже несколько лет, и у меня есть вопрос, касающийся внутреннего функционирования методов при создании объекта.

Таким образом, когда мы создаем объекты в POO, каждый объект получает свои собственные атрибуты. но на самом деле все они используют одни и те же методы, так как это работает внутри? методы указывают на один и тот же адрес, например, в C ++, и в этом случае, если мы рассмотрим класс с тонами методов и без атрибутов, какова «полезная нагрузка» памяти для создания большого количества объектов из этого класса?

Другими словами, дублирует ли программа адресные точки всех методов для каждого объекта или существует какое-либо другое внутреннее функционирование, чтобы они достигли своих методов?

1 Ответ

1 голос
/ 30 марта 2019

Разные языки могут реализовать это по-разному.В случае 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программа, без ООП, с которой можно запутаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...