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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 65, средняя оценка - 4.71
aknur
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 7
#1

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

23.12.2011, 00:21. Просмотров 9658. Ответов 17
Метки нет (Все метки)

Вот читаю книгу на английском, но не могу понять INSTANCE, что это значит в программирований ?

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

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

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? - C++
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа? - C++
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

Что такое хэндлер файла? Что такое файловый указатель? - C++
Что такое хэндлер файла? Что такое файловый указатель?

Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них - C++
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них пожалуйста.

Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере - C++
Есть класс, содержащий объекты и конструктор. Конструктор объявляется в одном из cpp файлов(их несколько). Можно ли, как-то, использовать...

Что такое перегрузка оператора? Что у меня в коде за ошибка? - C++
Что же я написал?? Что оно не компилится? Что значит error C2275: Superclass: недопустимое использование этого типа в качестве выражения ...

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

Очень хорошо поиметь представление о HINSTANCE можно на примере DLL. Считайте, что DLL это "как деталь механизма, которую могут использовать все приложения". Чтобы знать где эта "деталь" лежит нужно знать адрес части адресного пространства которую она занимает - вот HINSTANCE и даст нам адрес
читайте о DllMain по ссылке
1
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
23.12.2011, 11:46 #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, тогда это будет скорее всего синоним класса.
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 11:57 #4
fasked, HINSTANCE это фактически адрес объекта, я давал ответ в предположении исполняемого файла, вы дали
Цитата Сообщение от fasked Посмотреть сообщение
instances
экзампляры класса -
ИМХО это разные вещи. HINSTANCE это адрес, он может быть адресом для модуля и адресом для класса(ну если уж очень хочтся у экземпляра адрес найти(HINSTANCE)) - только участки размещения в адресном пространстве будут разными - исполняемый файл будет в защищённом прстранстве, а класс просто в куче. По практике знаю, что под HINSTANCE понимается адрес модуля, вот

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

Не по теме:

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

0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
23.12.2011, 12:03 #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ИМХО это разные вещи.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ИМХО путаете понятия instance of class и HINSTANCE of executable module
Ну понятно что разные. Просто речи о HINSTANCE (handle of instance) автор топика не вел.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.12.2011, 12:07 #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- все процессы загружают себя в оперативное пространство ОС. Таким образом какая-то часть ОС будет "занята" приложением - это область называется модулем. ОС не работает с именами программ она работает с модулями. Чтобы их как то различать она ОС должна знать в какой части адресного пространства находится модуль - вот HINSTANCE и есть адрес в памяти той самой области которую "занимает" приложение (читай HINSTANCE - адрес модуля, адрес области в которой хранятся директивы которые несёт в себе для процессора исполняемый файл)
А если кратко - адрес экземпляра класса "приложение"?
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 12:08 #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;
}
0
Миниатюры
Что такое INSTANCE в программирований ?  
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,375
23.12.2011, 12:11 #8
-=ЮрА=-, а самое забавное, что для 99.9% exe-файлов значение HINSTANCE одно и то же (конкретно 0x00400000), да и для многих DLL - тоже совпадет... :-)
Это все хорошо описано у мэтра Рихтера.
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 12:15 #9

Не по теме:

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



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

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

Не по теме:

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

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

Не по теме:

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

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

Не по теме:

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

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

0
silent_1991
23.12.2011, 13:22     Что такое INSTANCE в программирований ?
  #15

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2011, 13:22
Привет! Вот еще темы с ответами:

В этой части кода происходит объявление функций? Что такое void? Что в скобках? - C++
В этой части кода происходит объявление функций? Что такое void? Что в скобках? void get(float **mas, int N, int M); void...

Что такое #, include, что это означает - C++
______

Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы - C++
Заранее спасибо.

Код не работает,говорит,что не знает,что такое delay(100).в чём проблема?как сделать,чтоб программа заработала? - C++
#include &lt;graphics.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;dos.h&gt; int main() { int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.12.2011, 13:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru