Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Рассмотрим в качестве примера конструктор производного класса с инициализацией по умолчанию



class A { // базовый класс

int x1, x2; //закрытые данные

public: //открытые функции

(1) A(int ax1, int ax2) { x1= ax1; x2 = ax2;} //конструктор с параметрами

int GetX1 () { return x1;}

int GetX2 () { return x2;}

};

class B: public A { // производный класс

int y;

public:

// конструктор с умалчиваемыми значениями

(2) B (int ax1 =1, int ax2 = 2, int y1 = 3): A (ax1, ax2) { y = y1}

int GetY () { return y;}

};

void main ()

{ B b1 (10, 20, 30);

cout<<endl<< b1.GetX1 () << “ “ <<b1.GetX2 () <<” “ << b1.GetY ();

// 10 20 30

B b2 (10, 20);

cout<<endl<< b2.GetX1 () << “ “ <<b2.GetX2 () <<” “ << b2.GetY ();

//10 20 3

B b3 (10);

cout<<endl<< b3.GetX1 () << “ “ <<b3.GetX2 () <<” “ << b3.GetY ();

//10 2 3

B b4;

cout<<endl<< b4.GetX1 () << “ “ <<b4.GetX2 () <<” “ << b4.GetY ();

//1 2 3

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

A a (40, 50);

В производном классе B конструктор имеет параметры по умолчанию для всех переменных и производного и базового класса. Это позволяет создавать объекты производного класса, передавая им разное количество параметров.

Если бы конструктор базового класса имел параметры по умолчанию, то эти значения могли бы реализовываться только в объектах базового класса:

(3) A(int ax1=3, int ax2=5) { x1= ax1; x2 = ax2;}

A a;

cout<<endl<< a.GetX1 () << “ “ <<a.GetX2 () // 3 5

При создании объекта производного класса, тем его переменным, которые принадлежат классу A, будут присвоены значения указанные при вызове конструктора производного класса (2), либо значения по умолчанию из конструктора опять же производного класса.

Возможны следующие типы конструкции классов:

- Если при построении объектов производного класса нас устраивает инициализация по умолчанию данных базового класса (3), то в конструкторе класса B можно не вызывать конструктор базового класса А:

class B: public A {





Дата публикования: 2014-11-28; Прочитано: 187 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...