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

Что такое INSTANCE в программирований ? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 65, средняя оценка - 4.71
aknur
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 7
23.12.2011, 00:21     Что такое INSTANCE в программирований ? #1
Вот читаю книгу на английском, но не могу понять INSTANCE, что это значит в программирований ?

На русском это как-бы Экземпляр класса ( в вики прочитал )...

Но все-же не пойму, объясните пожалуйста на простом языке...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2011, 00:21     Что такое INSTANCE в программирований ?
Посмотрите здесь:

C++ Код не работает,говорит,что не знает,что такое delay(100).в чём проблема?как сделать,чтоб программа заработала?
C++ Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала
Что такое перегрузка оператора? Что у меня в коде за ошибка? C++
C++ Что такое #, include, что это означает
C++ Что такое С++ ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 11:15     Что такое INSTANCE в программирований ? #2
Цитата Сообщение от aknur Посмотреть сообщение
Но все-же не пойму, объясните пожалуйста на простом языке...
- все процессы загружают себя в оперативное пространство ОС. Таким образом какая-то часть ОС будет "занята" приложением - это область называется модулем. ОС не работает с именами программ она работает с модулями. Чтобы их как то различать она ОС должна знать в какой части адресного пространства находится модуль - вот HINSTANCE и есть адрес в памяти той самой области которую "занимает" приложение (читай HINSTANCE - адрес модуля, адрес области в которой хранятся директивы которые несёт в себе для процессора исполняемый файл)

Очень хорошо поиметь представление о HINSTANCE можно на примере DLL. Считайте, что DLL это "как деталь механизма, которую могут использовать все приложения". Чтобы знать где эта "деталь" лежит нужно знать адрес части адресного пространства которую она занимает - вот HINSTANCE и даст нам адрес
читайте о DllMain по ссылке
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
23.12.2011, 11:46     Что такое INSTANCE в программирований ? #3
-=ЮрА=-, Вы не о том немного.
Цитата Сообщение от aknur Посмотреть сообщение
На русском это как-бы Экземпляр класса ( в вики прочитал )...
Да, оно и есть.
C++
1
2
3
4
5
6
7
8
9
class Dog 
{
};
 
int main()
{
     Dog charly;
     Dog kurt;
}
Вот charly и kurt и есть в данном случае instances of Dog, то есть экземпляры класса Dog.
Еще можно встретить понятие entity, тогда это будет скорее всего синоним класса.
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 11:57     Что такое INSTANCE в программирований ? #4
fasked, HINSTANCE это фактически адрес объекта, я давал ответ в предположении исполняемого файла, вы дали
Цитата Сообщение от fasked Посмотреть сообщение
instances
экзампляры класса -
ИМХО это разные вещи. HINSTANCE это адрес, он может быть адресом для модуля и адресом для класса(ну если уж очень хочтся у экземпляра адрес найти(HINSTANCE)) - только участки размещения в адресном пространстве будут разными - исполняемый файл будет в защищённом прстранстве, а класс просто в куче. По практике знаю, что под HINSTANCE понимается адрес модуля, вот

Добавлено через 1 минуту

Не по теме:

fasked, ИМХО путаете понятия instance of class и HINSTANCE of executable module

fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
23.12.2011, 12:03     Что такое INSTANCE в программирований ? #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ИМХО это разные вещи.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ИМХО путаете понятия instance of class и HINSTANCE of executable module
Ну понятно что разные. Просто речи о HINSTANCE (handle of instance) автор топика не вел.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.12.2011, 12:07     Что такое INSTANCE в программирований ? #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- все процессы загружают себя в оперативное пространство ОС. Таким образом какая-то часть ОС будет "занята" приложением - это область называется модулем. ОС не работает с именами программ она работает с модулями. Чтобы их как то различать она ОС должна знать в какой части адресного пространства находится модуль - вот HINSTANCE и есть адрес в памяти той самой области которую "занимает" приложение (читай HINSTANCE - адрес модуля, адрес области в которой хранятся директивы которые несёт в себе для процессора исполняемый файл)
А если кратко - адрес экземпляра класса "приложение"?
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 12:08     Что такое INSTANCE в программирований ? #7
Цитата Сообщение от fasked Посмотреть сообщение
Просто речи о HINSTANCE (handle of instance) автор топика не вел.
- тогда вы тоже были не правы
Цитата Сообщение от fasked Посмотреть сообщение
-=ЮрА=-, Вы не о том немного.
Чтобы было понятно о чём говорилось для вас aknur, привожу код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <windows.h>
#include <stdio.h>
 
int main()
{
    HWND hWnd   = GetForegroundWindow();
    long lParam = 256;
    printf("HINST HMOD : 0x%p\n",(HINSTANCE)GetModuleHandle(NULL));
    printf("HINST HWND : 0x%p\n",(HINSTANCE)hWnd);
    printf("HINST long : 0x%p\n",(HINSTANCE)&lParam);
    system("pause");
    return 0;
}
Миниатюры
Что такое INSTANCE в программирований ?  
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
23.12.2011, 12:11     Что такое INSTANCE в программирований ? #8
-=ЮрА=-, а самое забавное, что для 99.9% exe-файлов значение HINSTANCE одно и то же (конкретно 0x00400000), да и для многих DLL - тоже совпадет... :-)
Это все хорошо описано у мэтра Рихтера.
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 12:15     Что такое INSTANCE в программирований ? #9

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
А если кратко - адрес экземпляра класса "приложение"?
taras atavin, приложение это набор директив процессору, как таковых классов там уже нет, реально ваши 5 копеек вообще не в тему и с моей стороны вообще некорректны
HINCTANCE - адрес и причём под этим адресом понимается адрес исполняемого модуля, к классу можно прикрутить при желании но проще просто пропечатать адрес экземпляра класса



Добавлено через 1 минуту
Цитата Сообщение от CheshireCat Посмотреть сообщение
да и для многих DLL - тоже совпадет... :-)
- потому как первым модулем в DllMain при загрузке DLL экзешником будет модуль этого приложения, вам дать код перечисления модулей процесса или разберётесь сами???

Добавлено через 2 минуты
CheshireCat, как бы если интересно см
сюда
и
сюда
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.12.2011, 12:17     Что такое INSTANCE в программирований ? #10
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
taras atavin, приложение это набор директив процессору, как таковых классов там уже нет, реально ваши 5 копеек вообще не в тему и с моей стороны вообще некорректны
HINCTANCE - адрес и причём под этим адресом понимается адрес исполняемого модуля, к классу можно прикрутить при желании но проще просто пропечатать адрес экземпляра класса
Это ты путаешь сущность с реализацией.
-=ЮрА=-
23.12.2011, 12:21
  #11

Не по теме:

Так топик начинает переходит в разряд маразма - я всё ответил, дальше как нибудь без меня...

fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
23.12.2011, 12:24     Что такое INSTANCE в программирований ? #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Чтобы было понятно о чём говорилось для вас aknur, привожу код
Да человек просто англоязычную литературу читает Скорее всего встретил предложения вида:
When the programmer declares an instance of the class, the constructor will be automatically called.
А Вы сразу о Windows API
silent_1991
23.12.2011, 13:02
  #13

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
дальше как нибудь без меня
И слава Богу, нет чтобы сразу сказать "да, прошу прощения, неверно понял вопрос, не заметил, что речь об instance без h в начале", так нет, даже после того, как вам об этом сказали, начали разводить какой-то спор не о чём (как у вас обычно и бывает).

-=ЮрА=-
23.12.2011, 13:20
  #14

Не по теме:

silent_1991, я бы отдал пол мира что бы вы мне это лично при встречи сказали - я чесное слово

Цитата Сообщение от silent_1991 Посмотреть сообщение
прошу прощения
по Донбасски сказал бы
Приезжайте в гости!!!

silent_1991
23.12.2011, 13:22
  #15

Не по теме:

-=ЮрА=-, ой, вы же ушли вроде? Вот и идите.

fasked
23.12.2011, 13:22
  #16

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Приезжайте в гости!
А вот меня к вам не пустят, так что давайте Вы к нам. Встретим с хлебом, с солью.

-=ЮрА=-
23.12.2011, 13:48
  #17

Не по теме:

Цитата Сообщение от fasked Посмотреть сообщение
так что давайте Вы к нам. Встретим с хлебом, с солью.
- как только занесёт в ваши края в каждом вашем топике напишу "я приехал", и даже из пензы в новосибирск поеду "извинятся по Донецки". Уверен мы все пришли бы к компромису - 100%!!!

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2011, 13:50     Что такое INSTANCE в программирований ?
Еще ссылки по теме:

В этой части кода происходит объявление функций? Что такое void? Что в скобках? C++
C++ Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
23.12.2011, 13:50     Что такое INSTANCE в программирований ?
  #18
 Комментарий модератора 
На том и порешали, весь дальнейший оффтоп будет наказываться.
Yandex
Объявления
23.12.2011, 13:50     Что такое INSTANCE в программирований ?
Ответ Создать тему
Опции темы

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