Студопедия — R.10.3 Абстрактные классы
Студопедия Главная Случайная страница Обратная связь

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

R.10.3 Абстрактные классы






Абстрактные классы дают средство для представления в языке общихпонятий, таких, например, как фигура, для которых могут использоватьсятолько конкретные их варианты, например, круг или квадрат. Кроме тогоабстрактный класс позволяет задать интерфейс, разнообразные реализациикоторого представляют производные классы. Абстрактным называется класс, который можно использовать толькокак базовый для некоторого другого класса, т.е. нельзя создатьникакого объекта абстрактного класса кроме того, который представляетбазовый класс для некоторого производного класса. Класс считаетсяабстрактным, если в нем есть хотя бы одна чистая виртуальнаяфункция. При описании класса виртуальная функция описывается какчистая с помощью спецификации-чистой ($$R.9.2). Чистую виртуальнуюфункцию не нужно определять, если только она явно не вызываетсяс помощью конструкции уточненное-имя ($$R.5.1). Рассмотрим пример: class point { /*... */ }; class shape { // абстрактный класс point center; //... public: point where() { return center; } void move(point p) { center=p; draw(); } virtual void rotate(int) = 0; // чистая виртуальная virtual void draw() = 0; // чистая виртуальная //... }; Абстрактный класс нельзя использовать как тип формального параметра,тип возвращаемого значения, а также как тип в операции явногопреобразования типа. Можно описывать указатели и ссылки на абстрактныйкласс, например: shape x; // ошибка: объект абстрактного класса shape* p; // нормально shape f(); // ошибка void g(shape); // ошибка shape& h(shape&); // нормально Чистые виртуальные функции и наследуются как чистые виртуальныефункции, например: class ab_circle: public shape { int radius; public: void rotate(int) { } // ab_circle::draw() чистая виртуальная функция }; Поскольку функция shape::draw() является чистой виртуальной функцией,то такой же будет по определению и функция ab_circle::draw(). Дляприведенного ниже описания класс circle не будет абстрактным, и уфункции circle::draw() где-то должно существовать определение. class circle: public shape { int radius: public: void rotate(int) { } void draw(); // должна быть где-то определена }; Функции-члены можно вызывать из конструктора абстрактного класса,результат прямого или косвенного вызова чистой виртуальной функциидля объекта, созданного с помощью такого конструктора, неопределен.







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



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

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

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