Функции в связанных списках
|
|
Billi_Jo | Дата: Пятница, 10.02.2017, 11:12 | Сообщение # 1 |
Сержант
Группа: Пользователи
Сообщений: 39
Статус: Offline
| Здравствуйте. Такой вопрос: Есть класс объектов. Есть класс связанных списков (СС). В классе СС есть функция добавления объекта. Правильно ли я понимаю, что экземпляр класса СС хранит лишь указатель на эту функцию, поэтому если я создам несколько связанных списков будет создано соответствующее число указателей, а не экземпляров функций (извините, за глупый вопрос, умом то я понимаю, что функция хранится на диске, а не в ОЗУ, но все таки хочется удостовериться).
|
|
| |
haav | Дата: Пятница, 10.02.2017, 12:24 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Функция добавления объекта будет одна для всех объектов. То есть в каждом новом созданном объекте будет указатель на один и тот же адрес функции в памяти. А вот другие поля , например переменные, будут иметь уникальные адреса для каждого объекта. Я думаю это так
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Billi_Jo | Дата: Пятница, 10.02.2017, 13:46 | Сообщение # 3 |
Сержант
Группа: Пользователи
Сообщений: 39
Статус: Offline
| Это хорошо)
Еще вопрос, для общего развития: Помимо указателя на функцию, будет ли в ОЗУ выделена память для хранения результата функции для 1) каждого экземпляра класса или 2) одна переменная для всех экземпляров или же 3) результат будут сохранен только в принимающую переменную (если ее нет, то память для хранения результата не выделяется)?
|
|
| |
haav | Дата: Пятница, 10.02.2017, 15:07 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| А какая разница какой объект обращается к функции? Функция всегда возвращает результат туда , куда заложено алгоритмом компилятора. Чаще всего результат помещается в какой-либо регистр процессора, чаще в EAX (по крайней мере на 32х-битной платформе windows). То есть в данном случае сама функция является статичной единицей, которая обрабатывает какие-то данные и возвращает результат в то место, которое определено разработчиками компилятора. Программист же получает результат работы функции в свой выделенный буфер путем копирования, которое опять же осуществляется алгоритмом компилятора.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Billi_Jo | Дата: Суббота, 11.02.2017, 09:46 | Сообщение # 5 |
Сержант
Группа: Пользователи
Сообщений: 39
Статус: Offline
| благодарю за разъяснения!
|
|
| |