Перегрузка функций при наследовании |
Теперь обратим внимание на функцию 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)
Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |