Программирование >>  Расширенная версия языка c++ 

1 ... 68 69 70 [ 71 ] 72 73 74 ... 227


Глава 7 ованив 2)9

~base () { cou.< Работа деструктора базового а\п ; } void showi() ( cout i \n; } . -

class derived: public base { -i -i . .

int ; . i

public:

derived (int n) ; base (n) { передача аргумента :

в базовый класс

cou << Работа конструктора производного классаХп ;

= n;

~derivedt) { cou Работа деструктора производного класса\п ;

int main ()

derived о (10);

о.showi () ; о.showj ();

return 0,-

Обратите особое внимание на объявление конструктора производного класса. Отметьте, как параметр п (который получает аргумент при инициализации) используется в конструкторе derived() и передается конструктору base().

4. Обычно конструкторы базового и производного классов не используют один и тот же аргумент. В этом случае, при необходимости передать каждому конструктору класса один или несколько аргументов, вы должны передать конструктору производного класса вс енты, необходимые конструкторам обоих классов. Затем конструктор производного класса просто передает конструктору базового класса те аргументы, которые ему требуются. Например, в представленной ниже программе показано, как передать один аргумент конструктору производного класса, а другой - - конструктору базового класса:

#include <iostream> using namespace std;

class base {

int- i; public:

base (int n) {

cou Работа конструктора базового класса\п ; V

i = n ;



return 0;

5. Конструктору производного класса совершенно нет необходимости как-то обрабатывать аргумент, предназначенный для передачи в базовый класс. Если производному классу этот аргумент не нужен, он его просто игнорирует и передает в базовый класс. Например, в этом фрагменте параметр п конструкторов ved() не используется. Вместо этого он просто передается конструктору base(): . ., . . ., ,

т

class base { int i;

public:

base (int n) {

cou Работа конструктора базового класса\п ; i = п;

base () { cou << Работа деструктора базового а\п ; } void ( cout i }

class derived: public base {

intj ; ... . ujV!

public:

derived(in base (n) { передача аргумента овый класс

-base О Работа деструктора базового а\п ; )

voi tewi {) { cou i \тС ; } . - ,

class derived lic base { ,

int j ; public:

derived (int n, in base (m) { передача аргумента

в базов1й класс cou << Работа конструктора производного классаХп ; j = п;

~derived() { cou << Работа деструктора производного класса\п ;

void showj () { cout j \n ,- }

{ -

derived о (10, 20) ;

о. showi (); о.showj (};




1. В приведенном ниже фрагменте добавьте конструктор для класса myderived. Он должен передать указатель на инициализируемую строку конструктору класса mybase. Кроме того, конструктор myderived() должен инициализировать переменную длиной строки.

ttinclude <iostream> ttinclude <cstring> using namespace std;

class mybase {

char str[80] ; ...

public: .

mybase (char *s) { strcpy(str) ; }

char *get() { return str; }

class myderived: public mybase {

int len; ,

public:

добавьте здесь конструктор int getlenf) ( return len; }

void ShowO ( cout get () \n ; }

int main

{ :

myderived ob ( привет );

ob.show();

cout return

2. Используя следующий фрагмент, создайте соответствующие конструкторы саг() и tnick(). Они должны передавать необходимые аргументы объектам класса vehicle. Кроме этого конструктор саг() должен при создании объекта

cout Работа конструктора производного класса\п ;. .

j = 0; аргумент п здесь не используется ,.

-derived О { cout Работа деструктора производного KjjaccaXn ;

void { cout j }



1 ... 68 69 70 [ 71 ] 72 73 74 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика