Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 87, средняя оценка - 4.85
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
02.03.2013, 21:34     Разница между объектом и экземпляром класса #1
Можете объяснить какая между этими понятиями разница?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ghostxx7
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 4
24.07.2014, 00:24     Разница между объектом и экземпляром класса #21
Я ответил базируясь на знаниях языка C# возможно в С++ данные понятия различны. Но мой ответ довольно точный это не моя фантазия, могу привести примеры и иллюстрации с объяснением.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 00:38     Разница между объектом и экземпляром класса #22
Цитата Сообщение от ghostxx7 Посмотреть сообщение
могу привести примеры и иллюстрации с объяснением
Жги. Только в теме С++, плюсовые примеры.
ghostxx7
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 4
24.07.2014, 01:01     Разница между объектом и экземпляром класса #23
Ещё раз повторюсь что объясню какая разница между объектом и экземпляром класса в 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-й минуты объяснение именно этого вопроса.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 01:04     Разница между объектом и экземпляром класса #24
Цитата Сообщение от ghostxx7 Посмотреть сообщение
Ещё раз повторюсь что объясню какая разница между объектом и экземпляром класса в C#
Нафига ты это делаешь в разделе С++?
Цитата Сообщение от ghostxx7 Посмотреть сообщение
Так вот именно объект содержит Method()
Объект не содержит никаких методов.
Цитата Сообщение от ghostxx7 Посмотреть сообщение
Между экземпляром и объектом есть свои ссылки.
экземпляр = объект
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.07.2014, 01:18     Разница между объектом и экземпляром класса #25
Цитата Сообщение от ghostxx7 Посмотреть сообщение
Ещё раз повторюсь что объясню какая разница между объектом и экземпляром класса в C#.
источник?

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

Не по теме:

Цитата Сообщение от 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-us/library/ms173110.aspx
Надеюсь, переводить не нужно.

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

Невежество в вопросах а-ля "а в чем между ними разница" и напускание тумана "а вы подумайте сами".
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
24.07.2014, 10:01     Разница между объектом и экземпляром класса #29
Цитата Сообщение от egor2116 Посмотреть сообщение
разница между машиной и автомобилем
Меня всегда убивал термин "автомашина".

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

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


В общем итог темы: разница между объектом и экземпляром класса в том, что хрен его знает трудностях перевода.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
24.07.2014, 10:08     Разница между объектом и экземпляром класса #30
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Указатели на физическое размещение в памяти этих методов наверное имелось в виду.
даже этого нет. В С++, например, все методы глобальные и скрыто (от программиста) принимают указатель на вызывающий объект первым параметром. В Java объект тоже не содержит адресов методов, там наоборот методы содержат указатели (ссылки) на нужные данные (там метод это объект на уровне С++). В C# думаю похожая технология.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
24.07.2014, 10:11     Разница между объектом и экземпляром класса #31
Очевидно, что препод просто сам напридумывал для студентов какую-то свою сомнительную терминологию
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
24.07.2014, 11:57     Разница между объектом и экземпляром класса #32
Цитата Сообщение от Kastaneda Посмотреть сообщение
даже этого нет. В С++, например, все методы глобальные и скрыто (от программиста) принимают указатель на вызывающий объект первым параметром. В Java объект тоже не содержит адресов методов, там наоборот методы содержат указатели (ссылки) на нужные данные (там метод это объект на уровне С++). В C# думаю похожая технология.
вот очень хорошая картинка, которая показывает устройство типов в C# (ну и вообще для общего развития полезно)
Разница между объектом и экземпляром класса
то есть у каждого объекта есть указатель на тип (смещение -2*sizeof(void*) относительно указателя на объект), ну и syncblock, нужный для многопотока.

Что касается методов, то да, каждый метод экземпляра принимает ссылку this (вплоть до соглашения, что при вызове метода указатель на this лежит в eac). Я вообще думал, что так везде
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 12:00     Разница между объектом и экземпляром класса #33
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Указатели на физическое размещение в памяти этих методов наверное имелось в виду.
В объектах и указателей на функции нет. Разве что на vtbl.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
24.07.2014, 12:12     Разница между объектом и экземпляром класса #34
Kastaneda, вот нарисовал тут картинку:
Разница между объектом и экземпляром класса

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

Единственный вопрос только: с данной точки зрения методы класса отличаются от глобальных функций только наличием первого неявного параметра?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
24.07.2014, 12:14     Разница между объектом и экземпляром класса #35
Цитата Сообщение от Vourhey Посмотреть сообщение
Разве что на vtbl.
Можно немножко сильно поподробнее?
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
24.07.2014, 12:17     Разница между объектом и экземпляром класса #36
SatanaXIII, ну насколько я понимаю, смысл тот же, что и на моей картинке выше - объект содержит ссылку на VMT (таблицу виртуальных методов), в которой производится поиск нужного метода. Если метод не найден, то переходим к VMT базового класса и ищем там, и так до тех пор, пока не найдем нужный метод.

Добавлено через 30 секунд
http://ru.wikipedia.org/wiki/%D0%A2%...B4%D0%BE%D0%B2
http://en.wikipedia.org/wiki/Virtual_method_table
krv
71 / 51 / 11
Регистрация: 10.07.2014
Сообщений: 328
24.07.2014, 12:40     Разница между объектом и экземпляром класса #37
В С++ эти понятия тождественны.
А пошлО это всё с начала реализации ООП в языке как таковом.
Ибо сначала было понятие обьекта, кто помнит такое типа
Pascal
1
2
3
4
TMyObject = object (TObject)
  ...поля
  ...методы
end;
а потом появилось
C++
1
2
3
4
5
class TMyObj : public TObject
{
public:
...
};
Вот откуда и пошло - обьекты и экземляры класса.
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
24.07.2014, 12:41     Разница между объектом и экземпляром класса #38
krv, если вы думаете, что ООП изобрели в object pascal - должен вас разочаровать
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
24.07.2014, 12:45     Разница между объектом и экземпляром класса #39
Psilon, да, это я все читал. Мне интересно как именно располагается все это в памяти: где лежат таблицы, куда приписывается ссылка на них объекту?..

Цитата Сообщение от krv Посмотреть сообщение
Вот откуда и пошло - обьекты и экземляры наследники класса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 12:47     Разница между объектом и экземпляром класса
Еще ссылки по теме:

C++ Почему при компилировании программы со вторым экземпляром класса изменяются значения первого?
C++ В чем разница между классом и шаблоном класса?
Возврат значения объектом класса C++

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

Или воспользуйтесь поиском по форуму:
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 12:47     Разница между объектом и экземпляром класса #40
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Можно немножко сильно поподробнее?
Когда добавляешь в класс виртуальные функции, то в объекте будет указатель на таблицу виртуальных функций. И только уже эта таблица содержит в себе указатели на функции.

Добавлено через 1 минуту
Цитата Сообщение от SatanaXIII Посмотреть сообщение
где лежат таблицы, куда приписывается ссылка на них объекту?
Это все compiler-dependent. Часто указатель располагается в начале объекта.
Yandex
Объявления
24.07.2014, 12:47     Разница между объектом и экземпляром класса
Ответ Создать тему
Опции темы

Текущее время: 02:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru