-Рубрики

 -Музыка

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

 

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

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

 -Статистика

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


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

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


А теперь мы дополним  наш новый класс двумя координатами, описывающими вторую точку (x1,y1), по которой может быть построен прямоугольник:
class Rectangle : public Point
{
private:
 int x1, y1;
public:
 Rectangle():Point() {}
 Rectangle(int nx, int ny):Point (nx,ny) {}
};

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

class Rectangle : public Point
{
public:
 int x1, y1;
public:
 Rectangle():Point(),x1(200),y1(200) {}
 Rectangle(int nx, int ny, int nx1, int ny1):Point (nx,ny),x1(nx1),y1(ny1) {}
 void Show()
 {
 cout<<"Coord: ("<<x<<","<<y<<")-("<<x1<<","<<y1<<")\n";
 }
};
void main()
{
 Rectangle r;
 Rectangle r1(10,10,20,20);
 r.Show(); //(100,100)-(200,200)
 r1.Show();//(10,10)-(20,20)
}

Здесь мы создаем два объекта. Для одного объекта запускаются оба конструктора по умолчанию, для другого, запускаются оба конструктора с параметрами. В этом случае, мы можем говорить, что конструкторы базового класса перегружены.

Теперь, представим, что конструктор по умолчанию класса Rectangle должен произвести какие-то действия. Тогда реализация его будет выглядеть так:

Rectangle():Point(),x1(200),y1(200)
{
 x+=50;
 y+=50;
}

Сначала запустится конструктор класса Point, который проинициализирует свойства x и y. А затем запустится конструктор класса Rectangle, в котором эти свойства будут увеличены на 50.
 


 

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

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

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

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