Наследование классов в с++
Иерархия классов позволяет определить новые классы на основе уже имеющихся. Имеющиеся классы обычно зовут базовыми, а новыепользовательскими. Допускается множественное наследование. Возможность наследовать компоненты, несвязанных между собой базовых классов Производный (пользовательский) класс; Недопустима для вызова. Ее назначение — служить основой для подменяющих ее функций в производных… Читать ещё >
Наследование классов в с++ (реферат, курсовая, диплом, контрольная)
Иерархия классов позволяет определить новые классы на основе уже имеющихся. Имеющиеся классы обычно зовут базовыми, а новыепользовательскими. Допускается множественное наследование. Возможность наследовать компоненты, несвязанных между собой базовых классов Производный (пользовательский) класс;
Class s: x, y, z {…};
Класс s порожден классами x, y, z откуда он наследует компоненты. Наследование компонента не выполняется, если он его имя будет использовано в определении класса s. Класс называется непосредственным. Прямым базовым классом, если он входит в список при определении класса. Ко для производного класса могут существовать косвенные и непрямые предшественники. Наличие нескольких прямых базовых классов называют множественным наследованием. Определение базовых классов должны предшествовать их использованию.
Class A{public: void f ();…};
Class B{public: void f ();.};
Class c: A, B,{…}.
…
c.f ()//error.
c.A:f ()//ok.
Более удобно разрешить такую неоднозначность перекрытием в производном классе обеих функций.
Class c: A, B.
{…
Public:
Void f () {A:f ();B:f ();…}//перекрывает обе функции. };
…
c.f ();//Правильно Для классов, порожденных от производных классов с общей базой по умолчанию существует 2 экземпляра общей базы.
Class x {int I;…};
Class A: public {…};
Class B: public x {…};
Class C: public A, public B{…}.
Чтобы устранить дублирование объекта непрямого базового класса при множественном наследовании. Этот базовый класс объявляет виртуальным с помощью ключевого слова virtual.
Class v{int I;.};
Class A: virtual public v{.};
Class v: virtual public v{.};
Class c: public A, public B {…};
Виртуальная функция — используется когда в базовый класс необходимо поместить функцию, которая должна по-разному выполняться, т. е в каждом производном классе требуется свой вариант этой функции. Типы аргументов, их количество, а также тип возвращаемого значения должны быть такими же как у одноименной функции в базовом классе. Виртуальная функция не может быть статической, механизм виртуального вызова может быть подавлен с помощью явного использования полного квалификаионного имени.
Class phone.
{…
Public:
Virtual void GiveDiolTone ();//виртуальная функция…};
Class payphone: public Phone.
{int centsDeposited.
Public: PayPhone (int area, int change, int line);
Void GiveDiolTone ();
Int AcceptCoins ();…};
Виртуальные функции могут использоваться для создания абстрактных базовых классов. Абстрактный базовый класс — класс который содержит по крайней мере одну полностью виртуальную функцию-член, для которой объявлен интерфейс, а реализация находится в производном классе.
Virtual Draw ()const=0.
Недопустима для вызова. Ее назначение — служить основой для подменяющих ее функций в производных классах. Поэтому невозможно создать самостоятельных объектов абстрактного класса. Абстрактный класс может использоватьс только в качестве базового для производных классов.