• Авторизация


Перегрузка функций при наследовании 24-06-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)

 

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Перегрузка функций при наследовании | TheLenka - Дневник Рыжей Девчонки | Лента друзей TheLenka / Полная версия Добавить в друзья Страницы: раньше»