class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

STL

основы

введение
Инструментарий
Проекты в C++
Комментарий
Утверждения
Идентификаторы
Область видимости
Литералы
Типы данных, переменные
Константы, перечисления
Выражения и операции
Агрегатные типы
Указатели
Ссылки
Массивы
Строки
Управляющие операторы
Функции
Аргументы функции

ООП

Терминология
Определение классов
Константные методы
Статические члены
Наследование
Инкапсуляция
Полиморфизм
Инициализация и уничтожение объектов
this

прочее

шаблоны
макросы
динамическая память
исключения
rtti

Справочник по C++

Полиморфизм

С помощью атрибута virtual указывается, что метод может быть переопределен в производных классах. Атрибут достаточно указать один раз при объявлении в базовом классе.

Если виртуальный метод был объявлен, но не определен, то класс называется абстрактным, а метод чисто виртуальным. При этом методу присваивается значение 0. Естественно объекты абстрактных классов создавать нельзя.

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


#include <iostream>
using namespace std;

// базовый класс
class MyClass{
public:

// виртуальный метод
virtual int metod(int arg1,int arg2){
return arg1+arg2;}

// чистый виртуальный метод
virtual int metod2() const =0; 
};

//-------------------------------------
// производные классы
class MyClass2: public MyClass {

//переопределяем виртуальные методы	
int metod(int arg1,int arg2){
	return arg1*arg2;}

int metod2() const {return 2;};
};

class MyClass3: public MyClass {

//переопределяем виртуальные методы	
int metod(int arg1,int arg2){
	return arg1%arg2;}

int metod2() const {return 3;};
};

class MyClass4: public MyClass3 {

//переопределяем виртуальные методы	
int metod2() const {return 4;};
};

//--------------------------------
// следующие две функции могут принимать
// в качестве аргумента
// любой производный класс от MyClass
// с определенным методом int metod2() const

void outMetod2(const MyClass*ptr){
cout<<ptr->metod2()<<endl;	
}

void outMetod2(const MyClass&ref){
cout<<ref.metod2()<<endl;	
}

int main() {	
// полиморфизм в деле
outMetod2(MyClass2());
outMetod2(MyClass3());	
outMetod2(MyClass4());
return 0;
}

Рейтинг@Mail.ru