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

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

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; просмотров: 339. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


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


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

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

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