1trofimov
@1trofimov
Beginner.net

Объект или экземпляр?

Доброго времени суток. Изучаю c# по видеокурсам, подобрался к классам и объектам. Как я понял, при создании объектов создаётся один объект (объединяет все, что повторяется в каждом объекте) и экземпляры класса (объединяют все, что различно). Если я понял неправильно, прошу поправить. Вопрос: Class1 Example = new Class(); - здесь я резервирую память под экземпляр класса и под объект одновременно? Как надо думать: здесь я создал объект?
Class1 Example2 = new Class(); - объект уже создан (сверху), поэтому здесь я резервирую память только под очередной экземпляр класса? Как надо думать: здесь я создал экземпляр класса?
https://yadi.sk/i/82ose5d3BWaOjg - мои мысли на рисунке
Заранее спасибо за ответы)
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
да, все верно, только терминология выбрана неудачная. Под объектом понимается часть в оперативной памяти, на которую ссылаются все экземпляры созданных классов. И эта часть - методы. Стоит разделять методы и поля. под поля у всех экземпляров выделяется отдельная память под каждое. методы это таблица виртуальных функций, если метод общий то его метаинформация описана в одном месте, в момент вызова ему прокидываются ссылки на тот или иной экземпляр. Так же устроено прототипное наследование в javascript.
upd: чтобы лучше понимать такие вещи как правило читают дисциплину организация эвм и систем, где в конечном итоге отвечаешь на вопросы:
- в какие ассемблерные инструкции превращается создание экземпляра
- как представлены данные в памяти
- что между ними общего
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Класс - это те буковки, которые вы видите на экране.
Представьте его как чертеж, например. А готовые объекты существуют в памяти компа во время работы программы. Представьте их как кучу какие-то штуковин, сделанных по общему чертежу.
Объекты - экземпляры класса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы