Базовый класс координат

class Coord // базовый класс координат

{

protected: // защищённые члены класса

double x , y ; // координаты

public: // открытые члены класса

Coord ( ) { x = 0 ; y = 0 ; } // конструктор базового класса

void Input ( ) ; // объявляет невиртуальную функцию

virtual void Print ( ) ; // объявляет виртуальную функцию

} ;

void Coord :: Input ( ) // позволяет вводить координаты с клавиатуры

{

cout<<"\tx="; cin>>x ; // вводит значение x с клавиатуры

cout<<"\ty="; cin>>y ; // вводит значение y с клавиатуры

}

void Coord :: Print ( ) // выводит значения координат на экран

{

cout<<"\tx="<<x<<"\ty="<<y<<'\n' ;

}

Производный класс точки

class Dot : public Coord // наследник класса координат

{

char name ; // имя точки

public: // открытые члены класса

Dot (char N ) : Coord ( ) { name = N ; } // вызывает конструктор базового класса

void Input ( ) ; // переопределяет невиртуальную функцию

void Print ( ) ; // переопределяет виртуальную функцию

} ;

void Dot :: Input ( ) // позволяет вводить координаты точки с клавиатуры

{

char S [ ] ="Введите координаты точки "; // объявляет и инициализирует строку приглашения

CharToOem ( S , S ) ; // преобразует символы строки в кириллицу

cout<<S<<name<<'\n'; // выводит на экран заголовок и имя точки

Coord :: Input ( ) ; // вызывает функцию базового класса

}

void Dot :: Print() // выводит значения координат точки на экран

{

char S [ ] ="Координаты точки "; // объявляет и инициализирует строку заголовка

CharToOem ( S , S ) ; // преобразует символы строки в кириллицу

cout<<S<<name<<" :"; // выводит на экран заголовок и имя точки

Coord :: Print ( ) ; // вызывает функцию базового класса

}

Производный класс вектора

class Vec : public Coord // наследник класса координат

{

char name [ 3 ] ; // имя вектора

public: // открытые члены класса

Vec ( char* pName ) : Coord ( ) { strncpy ( name , pName , 3 ) ; name [ 2 ] = '\0' ; }

void Input ( ) ; // переопределяет невиртуальную функцию

void Print ( ) ; // переопределяет виртуальную функцию

} ;

void Vec :: Input() // позволяет вводить проекции вектора с клавиатуры

{

char S [ ] ="Введите проекции вектора "; // объявляет и инициализирует строку приглашения

CharToOem ( S , S ) ; // преобразует символы строки в кириллицу

cout<<S<<name<<'\n'; // выводит на экран приглашение и имя вектора

Coord :: Input ( ) ; // вызывает функцию базового класса

}

void Vec :: Print ( ) // выводит значения проекций вектора на экран

{

char S [ ] = "Проекции вектора "; // объявляет и инициализирует строку заголовка

CharToOem ( S , S ) ; // преобразует символы строки в кириллицу

cout<<S<<name<<" :"; // выводит на экран заголовок и имя вектора

Coord :: Print ( ) ; // вызывает функцию базового класса

}

В приведённом примере объявлен базовый класс Coord и два производных класса Dot и Vec. Функция Print ( ) в производных классах является виртуальной, так как она объявлена виртуальной в базовом классе Coord. Функция Print ( ) в производных классах Dot и Vec переопределяет функцию базового класса. Если производный класс не предоставляет переопределенной реализации функции Print ( ), используется реализация по умолчанию из базового класса.








Дата добавления: 2016-10-17; просмотров: 538;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.