Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/140: Рейтинг темы: голосов - 140, средняя оценка - 4.66
73 / 73 / 12
Регистрация: 22.01.2013
Сообщений: 231

Разница между объектом и экземпляром класса

02.03.2013, 21:34. Показов 28737. Ответов 143
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можете объяснить какая между этими понятиями разница?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.03.2013, 21:34
Ответы с готовыми решениями:

Какая разница между eof и просто объектом?
То есть предположим открыли файл и объект input подставили в условие while и внутри считываем строки с файла с помощью getline. Так вот...

Какая разница между объектом класса и инстансом класса?
Читал (на русском языке) и не понял. Добавлено через 6 минут В смысле документацию читал.

В чем разница между объектом класса и ссылкой на него?
В разных источниках используется разная терминология и это путает. Я встречала когда объект называют instance и также ссылкой. Вот, мое...

143
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 4
24.07.2014, 00:24
Студворк — интернет-сервис помощи студентам
Я ответил базируясь на знаниях языка C# возможно в С++ данные понятия различны. Но мой ответ довольно точный это не моя фантазия, могу привести примеры и иллюстрации с объяснением.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.07.2014, 00:38
Цитата Сообщение от ghostxx7 Посмотреть сообщение
могу привести примеры и иллюстрации с объяснением
Жги. Только в теме С++, плюсовые примеры.
0
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 4
24.07.2014, 01:01
Ещё раз повторюсь что объясню какая разница между объектом и экземпляром класса в C#. Всё дело в том как работает память(точнее куча).
C#
1
2
3
4
5
6
MyClass obj1 = new MyClass (); 
MyClass obj2 = new MyClass ();
obj1.field=2;
obj2.field=10;
obj1.Method();
obj2.Method();
В первой строке как и во второй в памяти выделяется место. Создается 2 экземпляра класса. Но Method() у этих экземпляров один (сделано специально для экономии памяти). Так вот именно объект содержит Method(), а экземпляр содержит field. Между экземпляром и объектом есть свои ссылки.
Нашёл более наглядное объяснение:

Кликните здесь для просмотра всего текста


примерно с 50-й минуты объяснение именно этого вопроса.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.07.2014, 01:04
Цитата Сообщение от ghostxx7 Посмотреть сообщение
Ещё раз повторюсь что объясню какая разница между объектом и экземпляром класса в C#
Нафига ты это делаешь в разделе С++?
Цитата Сообщение от ghostxx7 Посмотреть сообщение
Так вот именно объект содержит Method()
Объект не содержит никаких методов.
Цитата Сообщение от ghostxx7 Посмотреть сообщение
Между экземпляром и объектом есть свои ссылки.
экземпляр = объект
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
24.07.2014, 01:18
Цитата Сообщение от ghostxx7 Посмотреть сообщение
Ещё раз повторюсь что объясню какая разница между объектом и экземпляром класса в C#.
источник?

Добавлено через 1 минуту
Цитата Сообщение от ghostxx7 Посмотреть сообщение
примерно с 50-й минуты
видеоуроки оставьте себе. ссылайтесь на рихтера, троельсона и прочих авторитетных товарищей
1
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 4
24.07.2014, 01:24
Согласен, надо ссылаться на первоисточник тогда не будет такого бардака в голове и на форумах.
0
24.07.2014, 01:35

Не по теме:

Цитата Сообщение от ghostxx7 Посмотреть сообщение
Согласен, надо ссылаться на первоисточник тогда не будет такого бардака в голове и на форумах.
Ты бы хоть в официальную документацию на сайте MS заглянул в качестве первоисточника:
A program may create many objects of the same class. Objects are also called instances,
Objects are also called instances
http://msdn.microsoft.com/en-u... 73110.aspx
Надеюсь, переводить не нужно.

1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.07.2014, 02:07
Цитата Сообщение от Mr.X Посмотреть сообщение
Блин! А меня все время интересовало откуда идет это загаживание терминологии. Оказывается вот где рассадник невежества.
Термин экземпляр класса (он же Instance, как выше написали) зачастую используется во вполне серьезной документации. Если в натуральном языке есть слова "отлично" и "замечательно", которые взаимозаменяемы, это не повод называть всех, кто говорит "отлично" вместо "замечательно" - невежами

Невежество в вопросах а-ля "а в чем между ними разница" и напускание тумана "а вы подумайте сами".
4
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
24.07.2014, 10:01
Цитата Сообщение от egor2116 Посмотреть сообщение
разница между машиной и автомобилем
Меня всегда убивал термин "автомашина".

Цитата Сообщение от Vourhey Посмотреть сообщение
Объект не содержит никаких методов.
Указатели на физическое размещение в памяти этих методов наверное имелось в виду.

Цитата Сообщение от daslex Посмотреть сообщение
Сначала было слово и слово было Объект.Дальше появился первый экземпляр, порожденный объектом, потом второй...., потом баги пошли.
Сначала были скрижали с описанием объекта. По образу и подобию описанного в них появился первый экземпляр, порожденный конструктором, потом второй...., потом баги пошли.


В общем итог темы: разница между объектом и экземпляром класса в том, что хрен его знает трудностях перевода.
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
24.07.2014, 10:08
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Указатели на физическое размещение в памяти этих методов наверное имелось в виду.
даже этого нет. В С++, например, все методы глобальные и скрыто (от программиста) принимают указатель на вызывающий объект первым параметром. В Java объект тоже не содержит адресов методов, там наоборот методы содержат указатели (ссылки) на нужные данные (там метод это объект на уровне С++). В C# думаю похожая технология.
1
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
24.07.2014, 10:11
Очевидно, что препод просто сам напридумывал для студентов какую-то свою сомнительную терминологию
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.07.2014, 11:57
Цитата Сообщение от Kastaneda Посмотреть сообщение
даже этого нет. В С++, например, все методы глобальные и скрыто (от программиста) принимают указатель на вызывающий объект первым параметром. В Java объект тоже не содержит адресов методов, там наоборот методы содержат указатели (ссылки) на нужные данные (там метод это объект на уровне С++). В C# думаю похожая технология.
вот очень хорошая картинка, которая показывает устройство типов в C# (ну и вообще для общего развития полезно)

то есть у каждого объекта есть указатель на тип (смещение -2*sizeof(void*) относительно указателя на объект), ну и syncblock, нужный для многопотока.

Что касается методов, то да, каждый метод экземпляра принимает ссылку this (вплоть до соглашения, что при вызове метода указатель на this лежит в eac). Я вообще думал, что так везде
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.07.2014, 12:00
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Указатели на физическое размещение в памяти этих методов наверное имелось в виду.
В объектах и указателей на функции нет. Разве что на vtbl.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
24.07.2014, 12:12
Kastaneda, вот нарисовал тут картинку:


Я не сильный знаток ассемблера, но вот так вот себе все это представляю: собственно в скомпилированном коде программы где-то происходит вызов функции, которая вообще ничего не знает о том, что она кому-то принадлежит. Она просто принимает параметры, и если первый (неявный) параметр не является указателем на правильный класс, то просто не найдется подходящей (полиморфной) функции.

Единственный вопрос только: с данной точки зрения методы класса отличаются от глобальных функций только наличием первого неявного параметра?
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
24.07.2014, 12:14
Цитата Сообщение от Vourhey Посмотреть сообщение
Разве что на vtbl.
Можно немножко сильно поподробнее?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.07.2014, 12:17
SatanaXIII, ну насколько я понимаю, смысл тот же, что и на моей картинке выше - объект содержит ссылку на VMT (таблицу виртуальных методов), в которой производится поиск нужного метода. Если метод не найден, то переходим к VMT базового класса и ищем там, и так до тех пор, пока не найдем нужный метод.

Добавлено через 30 секунд
http://ru.wikipedia.org/wiki/%... 0%BE%D0%B2
http://en.wikipedia.org/wiki/Virtual_method_table
0
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
24.07.2014, 12:40
В С++ эти понятия тождественны.
А пошлО это всё с начала реализации ООП в языке как таковом.
Ибо сначала было понятие обьекта, кто помнит такое типа
Pascal
1
2
3
4
TMyObject = object (TObject)
  ...поля
  ...методы
end;
а потом появилось
C++
1
2
3
4
5
class TMyObj : public TObject
{
public:
...
};
Вот откуда и пошло - обьекты и экземляры класса.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.07.2014, 12:41
krv, если вы думаете, что ООП изобрели в object pascal - должен вас разочаровать
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
24.07.2014, 12:45
Psilon, да, это я все читал. Мне интересно как именно располагается все это в памяти: где лежат таблицы, куда приписывается ссылка на них объекту?..

Цитата Сообщение от krv Посмотреть сообщение
Вот откуда и пошло - обьекты и экземляры наследники класса.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.07.2014, 12:47
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Можно немножко сильно поподробнее?
Когда добавляешь в класс виртуальные функции, то в объекте будет указатель на таблицу виртуальных функций. И только уже эта таблица содержит в себе указатели на функции.

Добавлено через 1 минуту
Цитата Сообщение от SatanaXIII Посмотреть сообщение
где лежат таблицы, куда приписывается ссылка на них объекту?
Это все compiler-dependent. Часто указатель располагается в начале объекта.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.07.2014, 12:47
Помогаю со студенческими работами здесь

Hibernate. какая разница между прокси объектом и lazy инициализацией?
собственно интересует тема сабжа

В чем разница между двумя объявлениями класса
Здравствуйте! Помогите, пожалуйста, разобраться В чем разница между двумя объявлениями: TClassName = class; end; TClassName =...

В чем разница между классом и шаблоном класса?
Помогите ответить. В чем разница между классом и шаблоном класса?

Связать слово с экземпляром класса
Всем доброго времени суток. Второй день ломаю голову (гуглить пробовал - не предлагать), поэтому чтобы не ломать и дальше, решил создать...

Multiprocessing array с экземпляром класса
добрый день. Решил протестировать как будет вести себя программа в мульти поточных вычислениях. Начал разбираться нашёл модуль...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru