экземпляр это



Автор Женя Есенин задал вопрос в разделе Другие языки и технологии

С++, объект класса, экземпляр класса, какой тип переменной хранит экземпляр класса? (экземпляр это что? Word, lpstr..?) и получил лучший ответ

Ответ от Ўля Павлова[гуру]
Класс это то же самое что старинная структура данных, только теперь он хранит
еще и методы обработки (программы-функции) и события.
Класс имеет конкретное имя, если переменная которая обьявлена своим именем имеет перед собой имя класса, то она есть указатель, указывающий на область памяти, который отводится новому экземпляру класса, но этот указатель заполняется в момент запуска конструктора.
В указатель заносится адрес области памяти, где будет храниться объект, и используя этот указатель, конструктор инициализирует внутренность экземпляра (= объекта) начальными данными.
Согласно структуре CStdioFile экземпляр inFile должен среди своих данных сохранить строку-имя файла. тогда он сможет работать.
Разберитесь, какое имя в CStdioFile имеет эта строка и добавьте ее как квалификатор к имени inFile.
Ведь внутри экземпляра inFile те же имена, что и внутри абстрактной структуры CStdioFile

Ответ от Ирина Х-С[гуру]
когда тебе говорят что переменная типа класс это указатель, то путают языки.
в плюсах запись CStdioFile inFile приводит к тому, что имя inFile означает непосредственно объект, а не указатель
также экземпляр не содержит указателей на невиртуальные методы

Ответ от Николай Веселуха[гуру]
Смотреть префиксы, задающие тип.
Объект и экземпляр - синонимы. Класс (структура) это сложный тип данных созданный программистом, а объект - переменная типа класс (структура) .
Размер объекта можно определить операцией sizeof
P.S.
Американский форум: ты задаёшь вопрос - тебе отвечают.
Еврейский форум: ты задаёшь вопрос, тебе отвечают вопросом на вопрос.
Русский форум: ты задаёшь вопрос, а тебе долго и со вкусом объясняют какой ты мудак!

Ответ от Krab Bark[гуру]
"суть в понимании что находится физически за фразой "объект класса" или "экземпляр класса" что это"
ОК. За фразой "объект класса стоит структура данных (обычная в Паскале и в С) , состоящая из набора расположенных рядом полей переменных, входящих в класс, дополненная указателями на функции, входящие в класс (часть их создается по умолчанию автоматически без упоминания программистом) , эти функции располагаются в памяти отдельно и являются общими для всех экземпляров класса, каждый экземпляр содержит только указатели на них. Это упрощенно. На самом деле из-за наследования появляются еще таблицы этих функций, так что указатели часто указывают не прямо на функции, а на таблицы, из которых выбираются нужные функции, а память для данных экземпляра класса часто включает в себя и служебные невидимые программисту переменные.
Что касается "венгерской нотации", то это только для программиста. Компилятор при разборе текста программы все это выкидывает и назначает свои обозначения, ему безразлично, как это называл программист.
P.S. По венгерской нотации именам классов (то есть именам типов, являющихся классами, дают префикс С, а именам экземпляров классов особых префиксов вообще не полагается, потому что класс обычно делает что-то свое особенное, букв на особенности разных классов не напасешься 😉 ).)
P.P.S. По твоему предыдущему вопросу дополню, ты написал
"int aiArray[50];
aiArray - это pointer указатель на массив"
- это не совсем так, если тебе когда-то понадобится более глубокое понимание, разберись с массивами. Имя массива при необходимости приводится к указателю (то есть создается указатель, хранящий адрес массива) , но исходно это не указатель, а сам массив. Например, sizeof (aiArray) даст размер всего массива, а не указателя, потому что указателя пока что не существует. C++ весь основан на принципе "два пишем, три в уме" 😉

Ответ от Капитан Гугл[гуру]
Сделай
cout << sizeof(CStdioFile);
и сразу увидишь, сколько байт занимает переменная этого типа.
"Венгерская нотация" - не более чем условность. Я, когда нужно, добавляю имя класса без C, вроде
editX
но это необязательно... и часто только путает ситуацию.

Ответ от Kaiu[гуру]
Прочти какие грабли от венгерской нотации бывают:
int i;
i - переменная 2 байта
У тебя 2 байта действительно?
inFile - объект класса и зачем ему имя давать по нотации?
Можно конечно тупо везде писать
csfInFile но про минусы читайте ранее уже дал ссылку
Сколько занимает экземпляр класса трудно сказать, зависит от класса и при наследовании может тянуть все от предков еще.
вопрос банальный... какой перефикс задать имени переменной по соглагеню 'венгерская нотация'Читай больше, написано же по ссылке "При этом, как правило, ни само наличие префиксов, ни их написание не являются требованием языков программирования, и у каждого программиста (или коллектива программистов) они могут быть своими"

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: С++, объект класса, экземпляр класса, какой тип переменной хранит экземпляр класса? (экземпляр это что? Word, lpstr..?)
Электрическое сопротивление на Википедии
Посмотрите статью на википедии про Электрическое сопротивление
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*