Учимся программировать на языке C++

         

ПРОСТОЙ ПРИМЕР


Предположим, к примеру, у вас есть класс computer_screen:

class computer_screen

{

public:

computer_screen(char *, long, int, int);

void show_screen(void);

private:

char type[32] ;

long colors;

int x_resolution;

int y_resolution;

};

Предположим, что у вас есть также класс mother_board:

class mother_board

{

public:



mother_board(int, int, int);

void show_mother_board(void);

private:

int processor;

int speed;

int RAM;

};

Используя эти два класса, можно породить класс computer, что показано ниже:

class computer : public computer_screen, public mother_board

{

public:

computer(char *, int, float, char *, long, int, int, int, int, int);

void show_computer(void);

private:

char name[64];

int hard_disk;

float floppy;

};

Как видите, этот класс указывает свои базовые классы сразу после двоеточия, следующего за именем класса computer.

class computer : public computer_screen, public mother_board //—————— Базовые классы

Следующая программа COMPUTER. CPP порождает класс computer, используя базовые классы computer_screen и mother_board:

#include iostream.h

#include string.h

class computer_screen

{

public:

computer_screen(char *, long, int, int);

void show_screen(void);

private:

char type[32];

long colors;

int x_resolution;

int y_resolution;

};

computer_screen::computer_screen(char *type, long colors, int x_res, int y_ree)

{

strcpy(computer_screen::type, type);

computer_screen::colors = colors;

computer_screen::x_resolution = x_res;

computer_screen::y_resolution = y_res;


}

void computer_screen::show_screen(void)

{

cout "Тип экрана: " type endl;

cout "Цветов: " colors endl;

cout "Разрешение: " x_resolution " на " y_resolution endl;

}

class mother_board

{

public:

mother_board(int, int, int);

void show_mother_board(void);

private:

int processor;

int speed;

int RAM;

};

mother_board::mother_board( int processor, int speed, int RAM)

{

mother_board::processor = processor;

mother_board::speed = speed;

mother_board::RAM = ram;

}

void mother_board::show_mother_board(void)

{

cout "Процессор: " processor endl;

cout "Частота: " speed "МГц" endl;

cout "ОЗУ: " RAM " МВайт" endl;

}

class computer : public computer_screen, public mother_board

{

public:

computer(char *, int, float, char *, long, int, int, int, int, int);

void show_computerf void);

private:

char name [64];

int hard_disk;

float floppy;

};

computer::computer(char *name, int hard_disk, float floppy, char *screen, long colors, int x_res, int y_res, int processor, int speed, int RAM) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, ram)

{

strcpy(computer::name, name);

computer::hard_disk = hard_disk;

computer::floppy = floppy;

}

void computer::show_computer(void)

{

cout "Тип: " name endl;



cout "Жесткий диск: " hard_disk "МВайт" endl;

cout "Гибкий диск: " floppy "МВайт" endl;

show_mother_board();

show_screen();

}

void main(void)

{

computer my_pc("Compaq", 212, 1.44, "SVGA", 16000000, 640, 480, 486, 66, 8);

my_pc.show_computer();

}

Если вы проанализируете конструктор класса computer, то обнаружите, что он вызывает конструкторы классов mother_board и computer_screen, как показано ниже:

computer::computer(char *name, int hard_disk, float floppy, char *screen, long colors, int x_res, int y_res, int processor, int speed, int RAM) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, RAM)


Содержание раздела