Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

R.9.1 Имена класса





Описание класса порождает новый тип. Например, ниже описываютсятри переменные трех различных типов: struct X { int a; }; struct Y { int a; }; X a1; Y a2; int a3; Отсюда следует, что такие присваивания приводят к несоответствиютипов: a1 = a2; // ошибка: Y присваивается X a1 = a3; // ошибка: int присваивается X Ниже описывается перегрузка ($$R.13) функции f(), а не простоповторное описание той же функции: int f(X); int f(Y); По той же причине нельзя дважды определять класс, это видно изпримера ниже, где дважды определен S: struct S { int a; }; struct S { int a; }; // ошибка, повторное определение Описание класса включает имя класса в ту область видимости, внутрикоторой оно произошло, и закрывает любой класс, объект, функцию илидругое описание этого имени в объемлющей области видимости ($$R.3.2).Если имя класса описано в такой области видимости, где уже былописан объект с таким же именем, функция или элемент перечисления, тообращаться к классу можно только с помощью конструкцииспецификация-сложного-типа ($$R.7.1.6), например: struct stat { //... }; stat gstt; // просто `stat' используется для // определения переменной int stat(struct stat*); // переопределение `stat' как функции void f() { struct stat* ps; // нужен префикс struct // для задания структуры stat //... stat(ps); // вызов stat() //... } Конструкция спецификация-сложного-типа вместе сослужебным-словом-класса, но без описания объекта или функции такжеможет служить для задания имени класса, как и описание класса, однаков этом случае класс не считается определенным, например: struct s { int a; }; void g() { struct s; // скрывает глобальную структуру `s' s* p; // используется локальная структура `s' struct s { char* p; }; // описание локальной структуры `s' } Такие правила позволяют классам ссылаться друг на друга при ихописании, пример, class vector; class matrix { //... friend vector operator*(matrix&, vector&); }; class vector { //... friend vector operator*(matrix&, vector&); }; Описание friend (дружественные функции) обсуждается в $$R.11.4, афункция operator в $$R.13.4. Если класс, указанный как друг, покаеще не описан, его имя считается принадлежащим той же областивидимости, в которой находится имя класса, содержащего описаниеfriend ($$R.11.4). В описании объектов или функций можно также использоватьконструкцию спецификация-сложного-типа ($$R.7.1.6). Ее использованиеотличается от описания класса тем, что если класс, чье имя указанов спецификации, находится в текущей области видимости, то имя изэтой спецификации будет ссылаться на него, например: struct s { int a; } void g() { struct* s p = new s; // обращение к глобальной `s' p->a = 1; } Имя считается описанным сразу же после появления его идентификаторав описании. Отсюда следует, что в описании class A * A; A в начале задается, как имя класса, а затем оно переопределяетсякак имя указателя на объект этого класса, поэтому для обозначения этогокласса следует использовать спецификацию-сложного типа class A. Такое"трюкачество" с именами может вызвать недоумение, и лучше его избегать. Конструкция имя-typedef ($$R.7.1.3) обозначает класс и считаетсяименем-класса, см. также $$R.7.1.3.







Дата добавления: 2015-09-04; просмотров: 312. Нарушение авторских прав; Мы поможем в написании вашей работы!




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Расчет концентрации титрованных растворов с помощью поправочного коэффициента При выполнении серийных анализов ГОСТ или ведомственная инструкция обычно предусматривают применение раствора заданной концентрации или заданного титра...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

Общая и профессиональная культура педагога: сущность, специфика, взаимосвязь Педагогическая культура- часть общечеловеческих культуры, в которой запечатлил духовные и материальные ценности образования и воспитания, осуществляя образовательно-воспитательный процесс...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Studopedia.info - Студопедия - 2014-2025 год . (0.014 сек.) русская версия | украинская версия