Автор Женя Есенин задал вопрос в разделе Другие языки и технологии
С++, объект класса, экземпляр класса, какой тип переменной хранит экземпляр класса? (экземпляр это что? Word, lpstr..?) и получил лучший ответ
Ответ от Ўля Павлова[гуру]
Класс это то же самое что старинная структура данных, только теперь он хранит
еще и методы обработки (программы-функции) и события.
Класс имеет конкретное имя, если переменная которая обьявлена своим именем имеет перед собой имя класса, то она есть указатель, указывающий на область памяти, который отводится новому экземпляру класса, но этот указатель заполняется в момент запуска конструктора.
В указатель заносится адрес области памяти, где будет храниться объект, и используя этот указатель, конструктор инициализирует внутренность экземпляра (= объекта) начальными данными.
Согласно структуре CStdioFile экземпляр inFile должен среди своих данных сохранить строку-имя файла. тогда он сможет работать.
Разберитесь, какое имя в CStdioFile имеет эта строка и добавьте ее как квалификатор к имени inFile.
Ведь внутри экземпляра inFile те же имена, что и внутри абстрактной структуры CStdioFile
когда тебе говорят что переменная типа класс это указатель, то путают языки.
в плюсах запись CStdioFile inFile приводит к тому, что имя inFile означает непосредственно объект, а не указатель
также экземпляр не содержит указателей на невиртуальные методы
Смотреть префиксы, задающие тип.
Объект и экземпляр - синонимы. Класс (структура) это сложный тип данных созданный программистом, а объект - переменная типа класс (структура) .
Размер объекта можно определить операцией sizeof
P.S.
Американский форум: ты задаёшь вопрос - тебе отвечают.
Еврейский форум: ты задаёшь вопрос, тебе отвечают вопросом на вопрос.
Русский форум: ты задаёшь вопрос, а тебе долго и со вкусом объясняют какой ты мудак!
"суть в понимании что находится физически за фразой "объект класса" или "экземпляр класса" что это"
ОК. За фразой "объект класса стоит структура данных (обычная в Паскале и в С) , состоящая из набора расположенных рядом полей переменных, входящих в класс, дополненная указателями на функции, входящие в класс (часть их создается по умолчанию автоматически без упоминания программистом) , эти функции располагаются в памяти отдельно и являются общими для всех экземпляров класса, каждый экземпляр содержит только указатели на них. Это упрощенно. На самом деле из-за наследования появляются еще таблицы этих функций, так что указатели часто указывают не прямо на функции, а на таблицы, из которых выбираются нужные функции, а память для данных экземпляра класса часто включает в себя и служебные невидимые программисту переменные.
Что касается "венгерской нотации", то это только для программиста. Компилятор при разборе текста программы все это выкидывает и назначает свои обозначения, ему безразлично, как это называл программист.
P.S. По венгерской нотации именам классов (то есть именам типов, являющихся классами, дают префикс С, а именам экземпляров классов особых префиксов вообще не полагается, потому что класс обычно делает что-то свое особенное, букв на особенности разных классов не напасешься 😉 ).)
P.P.S. По твоему предыдущему вопросу дополню, ты написал
"int aiArray[50];
aiArray - это pointer указатель на массив"
- это не совсем так, если тебе когда-то понадобится более глубокое понимание, разберись с массивами. Имя массива при необходимости приводится к указателю (то есть создается указатель, хранящий адрес массива) , но исходно это не указатель, а сам массив. Например, sizeof (aiArray) даст размер всего массива, а не указателя, потому что указателя пока что не существует. C++ весь основан на принципе "два пишем, три в уме" 😉
Сделай
cout << sizeof(CStdioFile);
и сразу увидишь, сколько байт занимает переменная этого типа.
"Венгерская нотация" - не более чем условность. Я, когда нужно, добавляю имя класса без C, вроде
editX
но это необязательно... и часто только путает ситуацию.
Прочти какие грабли от венгерской нотации бывают:
int i;
i - переменная 2 байта
У тебя 2 байта действительно?
inFile - объект класса и зачем ему имя давать по нотации?
Можно конечно тупо везде писать
csfInFile но про минусы читайте ранее уже дал ссылку
Сколько занимает экземпляр класса трудно сказать, зависит от класса и при наследовании может тянуть все от предков еще.
вопрос банальный... какой перефикс задать имени переменной по соглагеню 'венгерская нотация'Читай больше, написано же по ссылке "При этом, как правило, ни само наличие префиксов, ни их написание не являются требованием языков программирования, и у каждого программиста (или коллектива программистов) они могут быть своими"
Что можно приготовить с этой рыбой? см. внутри.
Усач - рыба семейства карповых. Отдельные экземпляры усача бывают длиной более 1 м и весят до 17
подробнее...
Что это за паук??? И ядовит ли он???
Аргиопа дольчатая (Argiope lobata).
#yaimg201670#
Названа так, потому что ее тело
подробнее...
Тыгыдымский конь... кто это? и какой он?
КОНЬ ТЫГЫДЫМСКИЙ (Equus tygydymensis) -- легендарное животное, одно из самых таинственных в
подробнее...
Расписка в двух экземплярах пишется или в одном всё-таки?
Для того, что бы расписка была признана действительной, не имеет значения в скольких экземплярах
подробнее...
За что этим зверюшкам поставили памятник?
В Турции, на самом большом озере страны — Ван, можно увидеть памятник кошкам породы, которая так и
подробнее...
Это гепард! Только какой-то необычный. Мне кажется что это гибрид гепарда и пумы, но я не уверена. Как он появился?
Считается, что это одна из мутаций гепарда. Фото сделал Гай Комб, проживающий в Soysambu, (Кения)
подробнее...
Что это за гриб такой "сухарник"? какие у него еще есть названия? Желательно с фото
Подгруздок белый и гриб сухарь
Подгруздок белый и гриб сухарь – это названия одного и того же
подробнее...
Что такое "интерфейс"? Вот, я читаю - "IDisposable - это такой интерфейс..."... и Что такое IDisposable?
Интерфейс - такое хитрое наследование, которое отражает некий аспект поведения, в отличие от
подробнее...
«Вета» -это кто?
*Вета* - так на языке маори (коренных жителей Новой Зеландии) называется самое большое насекомое
подробнее...
Доброй ночи господа и дамы, а зебра это лошадь?
Зебры - сравнительно небольшие полосатые лошади, длиной 2-2,4 м, высотой в холке 1,2- 1,4 м, хвост
подробнее...
эти ли ракушки я покупала в Адлере?
Это вряд ли )
Ципрея Фултона или каури Фултона (лат. Cypraea fultoni) — брюхоногий
подробнее...
Подскажите название, этого чуда природы
Географический конус (Conus geographus). Самая опасная улитка в мире.. .
#yaimg95952#
подробнее...
Почему I am a student они I am student? Кто скажет в чем проблема? I как понимаю I'm это я являюсь...
почитай что такое артикль "а"!
а зачем "the"???
они не переводятся и ничего не значат!
подробнее...