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

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

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

Author24 — интернет-сервис помощи студентам
Можете объяснить какая между этими понятиями разница?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2013, 21:34
Ответы с готовыми решениями:

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

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

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

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

143
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
24.07.2014, 12:49 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Vourhey Посмотреть сообщение
уже эта таблица содержит в себе указатели на функции
ну справедливо.

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

Не по теме:

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

0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.07.2014, 14:04 43
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А для глобальных функций существует таблица? Или как происходит к ним обращение?
По адресу/смещению. Таблицы создадутся для функций импортируемых из других библиотек.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
24.07.2014, 14:07 44
Цитата Сообщение от Mr.X Посмотреть сообщение
Как заметил Чехов, умный любит учиться, а дурак учить. Смысл слушать «профессоров»? Лучше книжки толковые почитать.
Толковая, вроде, книжка:
Цитата Сообщение от Стивен Прата
"Язык программирования С++. Лекции и упражнения" (2012, 6-е издание), Глава 10, стр. 530:

Класс — это определяемый пользователем тип, а объект — экземпляр класса.
1
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.07.2014, 16:30 45
Цитата Сообщение от gru74ik Посмотреть сообщение
Толковая, вроде, книжка
На самом деле объект там определяется на странице 36 без использования термина "экземпляр", а то место, которое вы цитируете, - это резюме в конце главы с повторением пройденного.
Понятие объекта у него определяется все же темно как-то, так что не очень толковая книжка в смысле строгости теории.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2014, 16:44 46
Цитата Сообщение от SatanaXIII Посмотреть сообщение
вот нарисовал тут картинку:
Отличия пространства имен от структуры
1
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
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*, поэтому компилятор вызывает эту функцию.
2
698 / 105 / 19
Регистрация: 22.06.2014
Сообщений: 234
24.07.2014, 19:16 48
Попробую и я внести свою лепту в обсуждение этого вопроса, хоть я и абсолютнейший новичок в C++.
Мне представляется различие объекта от экземпляра класса в том, что объект не всегда может являться экземпляром класса. Представим себе, например, абстрактный базовый класс. Создать от него самостоятельный объект нельзя, но при наследовании используется экземпляр этого класса как составная часть другого объекта. Я понимаю объект как самостоятельную цельную сущность (сферическую в вакууме), в то время как экземпляр класса - это сущность, которая ещё не является оконченной и готовой к использованию сущностью. Исходя из моего словоблудия, в некоторых случаях экземпляр класса (а именно абстрактного) не может существовать самостоятельно, предоставляя свой интерфейс, а является частью другого объекта, в то время как объект - это уже законченный результат одного или нескольких разных экземпляров класса. Представим себе множественное наследование в виде ромба, где есть абстрактный класс A, от него наследуются два самостоятельных класса B и C, а класс D является наследником обоих классов B и C. Тогда у нас имеется объект класса D, который имеет в себе два экземпляра класса A, думаю в данном случае корректнее всего говорить, что это экземпляры классов, но не объекты, так как нам известно, что от абстрактного класса нельзя создать объект. Чушь, не правда ли? =)
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.07.2014, 20:31 49
Цитата Сообщение от Martein Посмотреть сообщение
Чушь, не правда ли? =)
правда

да хватит уже спорить. Объект == экземпляр класса. Почему вас не смущает, что в языке есть 2 слова, означающих одно и то же?
1
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 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.
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.07.2014, 20:45 51
Цитата Сообщение от gru74ik Посмотреть сообщение
И уж точно, Ваше заявление:
Цитата Сообщение от Mr.X Посмотреть сообщение
В том, что "объект" - это официальный термин C++ из стандарта и учебников, а "экземпляр" - слово-паразит, применяемое дилетантами, теми, которые инициализируют переменные в теле конструктора.
вполне обоснованно можно признать как минимум поспешным - на мой взгляд, Прату вряд ли можно назвать дилетантом.
Вывод весьма поспешный и в высшей степени необоснованный. Дилетантами я назвал людей, которые употребляют термин "экземпляр" вместо термина "объект", т.е. параллельно с официально принятой терминологией образовалась параллельная дилетантская. Цитируемые же вами досточтимые авторы называют объект объектом, а не как-то по-другому, а термин instance употребляют как поясняющий. Может быть англоязычным читателям он что-то и поясняет, но его неудачный русский перевод только замусоривает людям мозги, чему доказательство бредни в данной теме сбитых "экземпляром" с пути и панталыку новичков, вот и еще свеженький подтянулся в сообщении № 48.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
24.07.2014, 21:05 52
Цитата Сообщение от Mr.X Посмотреть сообщение
дилетантами я назвал людей, которые употребляют термин "экземпляр" вместо термина "объект"
Из Вашего первоначального заявления без каких-либо дополнительных пояснений это так явственно не следовало. Заявление мне (и я думаю, не только мне) показалось довольно категоричным и безапелляционным в духе "все заднеприводные, один я д'Артаньян".

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

Цитата Сообщение от Mr.X Посмотреть сообщение
замусоривает людям мозги
Я этого как-то не увидел. На мой взгляд, проблема высосана из пальца. Есть два слова-синонима. Каждый употребляет тот термин, который ему больше нравится. Мэтры употребляют оба варианта - пруф я вам предоставил.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
24.07.2014, 21:10 53
Цитата Сообщение от gru74ik Посмотреть сообщение
Вполне себе адекватный перевод, на мой взгляд.
В стандарте языка описаны class objects, и никаких class instance нет.
Цитата Сообщение от gru74ik Посмотреть сообщение
Я этого как-то не увидел. На мой взгляд, проблема высосана из пальца. Есть два слова-синонима. Каждый употребляет тот термин, который ему больше нравится. Мэтры употребляют оба варианта - пруф я вам предоставил.
а еще есть свойства(properties) и методы(methods), о которых тоже нет ни слова в описании языка.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
24.07.2014, 21:20 54
Джосаттис и Вандервуд:
"Шаблоны C++":

Термин instance (экземпляр) имеет в C++ два значения. Значение, взятое из объектно-ориентированной терминологии, означает экземпляр класса, т.е. объект, являющийся реализацией класса. Например, в C++ std::cout является экземпляром класса std::ostream. Другое значение (используемое практически повсеместно в книге) этого термина — экземпляр шаблона, т.е. класс, функция или функция-член, получающиеся в результате подстановки вместо всех параметров шаблонов конкретных значений. В этом смысле экземпляр называется также специализацией, хотя последний термин часто ошибочно употребляется вместо явной специализации.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 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.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.07.2014, 21:56 56
Croessmah, и? У одного автора std::cout это объект, у другого - instance. Что это доказывает?

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

Только не надо кидать ссылок на спеки опять же, просто объяснить, на русском, понятно и просто, в чем разница.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
24.07.2014, 22:10 57
Цитата Сообщение от Psilon Посмотреть сообщение
Только не надо кидать ссылок на спеки опять же, просто объяснить, на русском, понятно и просто, в чем разница.
Объект, это не только объект класса, это более общее понятие. Лишь об этом я
Цитата Сообщение от Psilon Посмотреть сообщение
У одного автора std::cout это объект, у другого - instance. Что это доказывает?
то что кто-то ссылается на литературу по C++, а другие на литературу по программированию в общем(в том числе и по объектно-ориентированному). Отсюда и берутся разные термины, описывающие одно и тоже, либо схожие вещи.
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.07.2014, 22:18 58
Цитата Сообщение от gru74ik Посмотреть сообщение
Я этого как-то не увидел.
Т.е. вы согласны с авторами сообщений № 18, 19 и 48? Разве вы не видите, что мы теряем этих людей, мы их уже потеряли! Ну, если вы с ними согласны, то мы и вас потеряли, так что...

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

Не по теме:

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

0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.07.2014, 22:25 60
Цитата Сообщение от Croessmah Посмотреть сообщение
не факт что после решения получится
А никто этого и не утверждал. Да и после какого по счету решения там не сказано. Ну и насколько ясно тоже никому не ясно. Т.е. все в мире относительно.
0
24.07.2014, 22:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2014, 22:25
Помогаю со студенческими работами здесь

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

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

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

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

Сериализация. Какая разница между методами методов readObject() и readUnshared() класса ObjectInputStream?
Java-Сериализация. Какая разница между методами методов readObject() и readUnshared() класса...

Работа с локальным экземпляром класса из события
Есть код: class Vivid { static void Main(string args) { disRpc drp = new disRpc(); ...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru