#oop #methods
#ооп #методы
Вопрос:
Я программирую уже несколько лет, и у меня есть вопрос, касающийся внутреннего функционирования методов, когда мы создаем объект.
Итак, когда мы создаем объекты в POO, каждый объект получает свои собственные атрибуты. но на самом деле все они используют одни и те же методы, так как же это работает внутренне? указывают ли методы на один и тот же адрес, например, в C , и в этом случае, если мы рассматриваем класс с множеством методов и без атрибутов, какова «полезная нагрузка» памяти для создания большого количества объектов из этого класса?
Другими словами, дублирует ли программа адресные точки всех методов для каждого объекта или есть какое-либо другое внутреннее функционирование, позволяющее им достигать своих методов?
Ответ №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(amp;a, true);
Итак, теперь у нас есть C
программа, с которой не нужно путать ООП.
Комментарии:
1. Отлично! Другой подсказкой мог бы быть своего рода синглтон (основной класс) только с методами и что-то вроде ссылки на этот основной класс для всех объектов, но мы близки к тому, что вы здесь выражаете. Большое вам спасибо