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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 87, средняя оценка - 4.85
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
02.03.2013, 21:34     Разница между объектом и экземпляром класса #1
Можете объяснить какая между этими понятиями разница?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
24.07.2014, 12:49     Разница между объектом и экземпляром класса #41
Цитата Сообщение от Vourhey Посмотреть сообщение
уже эта таблица содержит в себе указатели на функции
ну справедливо.

А для глобальных функций существует таблица? Или как происходит к ним обращение?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
krv
71 / 51 / 11
Регистрация: 10.07.2014
Сообщений: 328
24.07.2014, 13:20     Разница между объектом и экземпляром класса #42
Цитата Сообщение от Psilon Посмотреть сообщение
krv, если вы думаете, что ООП изобрели в object pascal - должен вас разочаровать
Нет, я так не думаю. Просто привёл пример описания и названия сущностей ООП в двух самых распространённых (на время начала внедрения ООП) языках, на которых все учились, в том числе и те проФФесора, что спросили топикстартера.
Пример откуда взялись названия "объект" и "класс" как таковые.
SatanaXIII, именно экземпляры, про наследование - это другая тема.
У глобальных функций есть просто адрес как таковой. и идёт вызов по адресу
Assembler
1
call addr
хотя там от модели памяти когда то зависело...
в виндовс модель одна, так что тоже не актуально.

Не по теме:

зы. За ошибки можете пинать, а за опечатки - не надо, новая клава на новой работе, еще не привык.

Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.07.2014, 14:04     Разница между объектом и экземпляром класса #43
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А для глобальных функций существует таблица? Или как происходит к ним обращение?
По адресу/смещению. Таблицы создадутся для функций импортируемых из других библиотек.
gru74ik
Модератор
 Аватар для gru74ik
3121 / 1347 / 167
Регистрация: 20.02.2013
Сообщений: 3,852
Записей в блоге: 17
24.07.2014, 14:07     Разница между объектом и экземпляром класса #44
Цитата Сообщение от Mr.X Посмотреть сообщение
Как заметил Чехов, умный любит учиться, а дурак учить. Смысл слушать «профессоров»? Лучше книжки толковые почитать.
Толковая, вроде, книжка:
Цитата Сообщение от Стивен Прата
"Язык программирования С++. Лекции и упражнения" (2012, 6-е издание), Глава 10, стр. 530:

Класс — это определяемый пользователем тип, а объект — экземпляр класса.
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
24.07.2014, 16:30     Разница между объектом и экземпляром класса #45
Цитата Сообщение от gru74ik Посмотреть сообщение
Толковая, вроде, книжка
На самом деле объект там определяется на странице 36 без использования термина "экземпляр", а то место, которое вы цитируете, - это резюме в конце главы с повторением пройденного.
Понятие объекта у него определяется все же темно как-то, так что не очень толковая книжка в смысле строгости теории.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2014, 16:44     Разница между объектом и экземпляром класса #46
Цитата Сообщение от SatanaXIII Посмотреть сообщение
вот нарисовал тут картинку:
Отличия пространства имен от структуры
gru74ik
Модератор
 Аватар для gru74ik
3121 / 1347 / 167
Регистрация: 20.02.2013
Сообщений: 3,852
Записей в блоге: 17
24.07.2014, 18:43     Разница между объектом и экземпляром класса #47
Цитата Сообщение от Mr.X Посмотреть сообщение
На самом деле
Перефразируя Ницше
нет никаких "на самом деле", есть только интерпретации
На мой взгляд, мы в первую очередь отталкивались от вопроса ТС. Вопрос звучал так:
Цитата Сообщение от The_bolT Посмотреть сообщение
C++ - Разница между объектом и экземпляром класса
Можете объяснить какая между этими понятиями разница?
Вы апеллировали к учебной литературе. Вот Вам учебная литература:
у Праты всё совершенно ясно объяснено, на мой взгляд: в рамках концепций и понятий С++ имеется понятие класс (за чем, собственно, следует чёткое определение класса) и есть понятие объект (экземпляр класса).

В оригинале:
Цитата Сообщение от Stephen Prata
A class is a user-defined type, and an object is an instance of a class.
На странице 36, действительно, имеет место развёрнутое описание понятий класса и объекта. Суть объяснений (опуская приводимые Стивеном примеры), если я правильно понял, сводится к следующему:
Цитата Сообщение от Стивен Прата
В отличие от процедурного программирования, в котором акцент делается на алгоритмах, в ООП во главу угла поставлены данные. Вместо того чтобы пытаться решать задачу, приспосабливая ее к процедурному подходу в языке программирования, в ООП язык программирования приспосабливается к решению задачи. Суть заключается в том, чтобы создать такие формы данных, которые могли бы выразить важные характеристики решаемой задачи.
В языке программирования C++ существуют понятия класса, который представляет собой спецификацию, описывающую такую новую форму данных, и объекта, который представляет собой индивидуальную структуру данных, созданную в соответствии с этой спецификацией.
<...>
В общем, класс описывает, какие данные используются для отображения объекта и какие операции могут быть выполнены над этими данными.
что, по-моему, никак не протеворечит сказанному на странице 530 (про экземпляр класса).

И уж точно, Ваше заявление:
Цитата Сообщение от Mr.X Посмотреть сообщение
"объект" - это официальный термин C++ из стандарта и учебников, а "экземпляр" - слово-паразит, применяемое дилетантами, теми, которые инициализируют переменные в теле конструктора
вполне обоснованно можно признать как минимум поспешным - на мой взгляд, Прату вряд ли можно назвать дилетантом.

Добавлено через 17 минут
Если Вам мало Праты, то вот у Скотта Майерса:
"Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ":

Объект oneHalf – это экземпляр класса, включающего в себя operator*, поэтому компилятор вызывает эту функцию.
Martein
Оператор ЭВМ 6 разряда
 Аватар для Martein
657 / 68 / 12
Регистрация: 22.06.2014
Сообщений: 147
24.07.2014, 19:16     Разница между объектом и экземпляром класса #48
Попробую и я внести свою лепту в обсуждение этого вопроса, хоть я и абсолютнейший новичок в C++.
Мне представляется различие объекта от экземпляра класса в том, что объект не всегда может являться экземпляром класса. Представим себе, например, абстрактный базовый класс. Создать от него самостоятельный объект нельзя, но при наследовании используется экземпляр этого класса как составная часть другого объекта. Я понимаю объект как самостоятельную цельную сущность (сферическую в вакууме), в то время как экземпляр класса - это сущность, которая ещё не является оконченной и готовой к использованию сущностью. Исходя из моего словоблудия, в некоторых случаях экземпляр класса (а именно абстрактного) не может существовать самостоятельно, предоставляя свой интерфейс, а является частью другого объекта, в то время как объект - это уже законченный результат одного или нескольких разных экземпляров класса. Представим себе множественное наследование в виде ромба, где есть абстрактный класс A, от него наследуются два самостоятельных класса B и C, а класс D является наследником обоих классов B и C. Тогда у нас имеется объект класса D, который имеет в себе два экземпляра класса A, думаю в данном случае корректнее всего говорить, что это экземпляры классов, но не объекты, так как нам известно, что от абстрактного класса нельзя создать объект. Чушь, не правда ли? =)
Psilon
Master of Orion
 Аватар для Psilon
5742 / 4690 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
24.07.2014, 20:31     Разница между объектом и экземпляром класса #49
Цитата Сообщение от Martein Посмотреть сообщение
Чушь, не правда ли? =)
правда

да хватит уже спорить. Объект == экземпляр класса. Почему вас не смущает, что в языке есть 2 слова, означающих одно и то же?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
24.07.2014, 20:45     Разница между объектом и экземпляром класса #50
Цитата Сообщение от Psilon Посмотреть сообщение
Объект == экземпляр класса.
1.8 The С++ object model
1.8/1
The constructs in a C ++ program create, destroy, refer to, access, and manipulate objects. An object is a region of storage. [ Note: A function is not an object, regardless of whether or not it occupies storage in the way that objects do. — end note ] An object is created by a definition (3.1), by a new-expression (5.3.4) or by the implementation (12.2) when needed. The properties of an object are determined when the object is created. An object can have a name (Clause 3). An object has a storage duration (3.7) which influences its lifetime (3.8). An object has a type (3.9). The term object type refers to the type with which the object is created. Some objects are polymorphic (10.3); the implementation generates information associated with each such object that makes it possible to determine that object’s type during program execution. For other objects, the interpretation of the values found therein is determined by the type of the expressions (Clause 5) used to access them.
Цитата Сообщение от Martein Посмотреть сообщение
Создать от него самостоятельный объект нельзя, но при наследовании используется экземпляр этого класса как составная часть другого объекта.
1.8/2
Objects can contain other objects, called subobjects. A subobject can be a member subobject (9.2), a base class subobject (Clause 10), or an array element. An object that is not a subobject of any other object is called a complete object.
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
24.07.2014, 20:45     Разница между объектом и экземпляром класса #51
Цитата Сообщение от gru74ik Посмотреть сообщение
И уж точно, Ваше заявление:
Цитата Сообщение от Mr.X Посмотреть сообщение
В том, что "объект" - это официальный термин C++ из стандарта и учебников, а "экземпляр" - слово-паразит, применяемое дилетантами, теми, которые инициализируют переменные в теле конструктора.
вполне обоснованно можно признать как минимум поспешным - на мой взгляд, Прату вряд ли можно назвать дилетантом.
Вывод весьма поспешный и в высшей степени необоснованный. Дилетантами я назвал людей, которые употребляют термин "экземпляр" вместо термина "объект", т.е. параллельно с официально принятой терминологией образовалась параллельная дилетантская. Цитируемые же вами досточтимые авторы называют объект объектом, а не как-то по-другому, а термин instance употребляют как поясняющий. Может быть англоязычным читателям он что-то и поясняет, но его неудачный русский перевод только замусоривает людям мозги, чему доказательство бредни в данной теме сбитых "экземпляром" с пути и панталыку новичков, вот и еще свеженький подтянулся в сообщении № 48.
gru74ik
Модератор
 Аватар для gru74ik
3121 / 1347 / 167
Регистрация: 20.02.2013
Сообщений: 3,852
Записей в блоге: 17
24.07.2014, 21:05     Разница между объектом и экземпляром класса #52
Цитата Сообщение от Mr.X Посмотреть сообщение
дилетантами я назвал людей, которые употребляют термин "экземпляр" вместо термина "объект"
Из Вашего первоначального заявления без каких-либо дополнительных пояснений это так явственно не следовало. Заявление мне (и я думаю, не только мне) показалось довольно категоричным и безапелляционным в духе "все заднеприводные, один я д'Артаньян".

Цитата Сообщение от Mr.X Посмотреть сообщение
неудачный русский перевод
Вполне себе адекватный перевод, на мой взгляд.

Цитата Сообщение от Mr.X Посмотреть сообщение
замусоривает людям мозги
Я этого как-то не увидел. На мой взгляд, проблема высосана из пальца. Есть два слова-синонима. Каждый употребляет тот термин, который ему больше нравится. Мэтры употребляют оба варианта - пруф я вам предоставил.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
24.07.2014, 21:10     Разница между объектом и экземпляром класса #53
Цитата Сообщение от gru74ik Посмотреть сообщение
Вполне себе адекватный перевод, на мой взгляд.
В стандарте языка описаны class objects, и никаких class instance нет.
Цитата Сообщение от gru74ik Посмотреть сообщение
Я этого как-то не увидел. На мой взгляд, проблема высосана из пальца. Есть два слова-синонима. Каждый употребляет тот термин, который ему больше нравится. Мэтры употребляют оба варианта - пруф я вам предоставил.
а еще есть свойства(properties) и методы(methods), о которых тоже нет ни слова в описании языка.
gru74ik
Модератор
 Аватар для gru74ik
3121 / 1347 / 167
Регистрация: 20.02.2013
Сообщений: 3,852
Записей в блоге: 17
24.07.2014, 21:20     Разница между объектом и экземпляром класса #54
Джосаттис и Вандервуд:
"Шаблоны C++":

Термин instance (экземпляр) имеет в C++ два значения. Значение, взятое из объектно-ориентированной терминологии, означает экземпляр класса, т.е. объект, являющийся реализацией класса. Например, в C++ std::cout является экземпляром класса std::ostream. Другое значение (используемое практически повсеместно в книге) этого термина — экземпляр шаблона, т.е. класс, функция или функция-член, получающиеся в результате подстановки вместо всех параметров шаблонов конкретных значений. В этом смысле экземпляр называется также специализацией, хотя последний термин часто ошибочно употребляется вместо явной специализации.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
24.07.2014, 21:24     Разница между объектом и экземпляром класса #55
Цитата Сообщение от gru74ik Посмотреть сообщение
Например, в C++ std::cout является экземпляром класса std::ostream.
http://www.cplusplus.com/reference/iostream/cout/
Object of class ostream that represents the standard output stream oriented to narrow characters (of type char). It corresponds to the C stream stdout.
Psilon
Master of Orion
 Аватар для Psilon
5742 / 4690 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
24.07.2014, 21:56     Разница между объектом и экземпляром класса #56
Croessmah, и? У одного автора std::cout это объект, у другого - instance. Что это доказывает?

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

Только не надо кидать ссылок на спеки опять же, просто объяснить, на русском, понятно и просто, в чем разница.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
24.07.2014, 22:10     Разница между объектом и экземпляром класса #57
Цитата Сообщение от Psilon Посмотреть сообщение
Только не надо кидать ссылок на спеки опять же, просто объяснить, на русском, понятно и просто, в чем разница.
Объект, это не только объект класса, это более общее понятие. Лишь об этом я
Цитата Сообщение от Psilon Посмотреть сообщение
У одного автора std::cout это объект, у другого - instance. Что это доказывает?
то что кто-то ссылается на литературу по C++, а другие на литературу по программированию в общем(в том числе и по объектно-ориентированному). Отсюда и берутся разные термины, описывающие одно и тоже, либо схожие вещи.
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
24.07.2014, 22:18     Разница между объектом и экземпляром класса #58
Цитата Сообщение от gru74ik Посмотреть сообщение
Я этого как-то не увидел.
Т.е. вы согласны с авторами сообщений № 18, 19 и 48? Разве вы не видите, что мы теряем этих людей, мы их уже потеряли! Ну, если вы с ними согласны, то мы и вас потеряли, так что...

Цитата Сообщение от Croessmah Посмотреть сообщение
В стандарте языка описаны class objects, и никаких class instance нет.
Действительно, давайте уже стандарта придерживаться. Предлагаю дискуссию прекратить, а на еретика-"профессора", задающего дурацкие вопросы, наложить епитимью - выучить стандарт наизусть и прочитывать каждое утро по три раза громко и с выражением.
Croessmah
24.07.2014, 22:21
  #59

Не по теме:

Цитата Сообщение от Mr.X Посмотреть сообщение
Проектирование – это такая задача, которую можно ясно сформулировать только после ее решения. (из Макконнелла)
не факт что после решения получится

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 22:25     Разница между объектом и экземпляром класса
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
24.07.2014, 22:25     Разница между объектом и экземпляром класса #60
Цитата Сообщение от Croessmah Посмотреть сообщение
не факт что после решения получится
А никто этого и не утверждал. Да и после какого по счету решения там не сказано. Ну и насколько ясно тоже никому не ясно. Т.е. все в мире относительно.
Yandex
Объявления
24.07.2014, 22:25     Разница между объектом и экземпляром класса
Ответ Создать тему
Опции темы

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