-Рубрики

 -Музыка

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в TheLenka

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 03.01.2009
Записей:
Комментариев:
Написано: 265


Перегрузка функций при наследовании

Среда, 24 Июня 2009 г. 16:15 + в цитатник



Теперь обратим внимание  на функцию Show(). В нашем последнем примере эта функция перегружена. В базовом и производном классе использовано один и тот же идентификатор для описания этой функции. В таком случае, компилятор вызывает реализацию функции из производного класса. Но, если нам нужна также реализация функции Show() из базового класса, мы можем перегрузить функцию, и в коде перегрузки вызвать функцию родительского класса. Для нашего примера, функция Show() базового класса будет нам показывать координаты (x,y), а функция производного класса будет выводить на экран координаты (x1,y1), естественно, внешний вид вывода несколько изменится.

class Rectangle
{
 public:
 void Show()
 {
 Point::Show();
 cout<<"Coord: ("<<x1<<","<<y1<<")\n";
 }
}

Point::Show() – есть ни что иное, как вызов функции Show() класса Point(). Естественно, вызов этой функции мы можем поместить и после вывода координат (x1,y1), соответственно, изменится и порядок выводимых координат на экране.
void main()
{
Rectangle r;
 r.Show();//Coord: (100,100)
 //Coord: (200,200)
}
Таким же способом мы можем изменить реализацию функции Move(), описанную в классе Point.
void Move(int dx,int dy,int dx1,int dy1)
{
 x1+=dx1;
 y1+=dy1;
 Point::Move(dx,dy);
}
void main()
{
 Rectangle r;
 r.Show(); //Coord: (100,100)
 //(200,200)
 r.Move(10,10,20,20);
 r.Show(); //Coord: (220,220)

 


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку