Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
1

Множественное наследование. Построение производных классов

28.10.2014, 21:40. Просмотров 1990. Ответов 2
Метки нет (Все метки)

Необходимо построить иерархию классов согласно схемы наследования.
Каждый класс должен содержать инициализирующий конструктор и функцию show для вывода значений.
Функция main должна иллюстрировать иерархию наследования.

Название: l1_07.gif
Просмотров: 119

Размер: 2.5 Кб

Я немного набросала, но не разберусь как правильно передать значение в класс D1. Помогите, пожалуйста, а то запуталась с этими игреками и иксами.
А конкретно, вопросы, если я беру базовыми классами три класса (B1, B2, B3), то в производном D1 мне надо создавать три переменные (допустим int d, int g, int r)?
И как правильно оформлять D2, базовым классом которого является D1?
После базовых классов совсем запуталась в коде

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "stdafx.h"
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
 
using namespace std;
 
class B1{
 int a;
public:
 B1() { };
 B1(int x) { a=x; }
 void show_B1() { cout <<"B1=   "<< a << "\n"; }
};
 
class B2{
 int b;
public:
 B2() { };
 B2(int y) { b=y; }
 void show_B2() { cout <<"B2=   "<< b << "\n"; }
};
 
class B3{
 int c;
public:
 B3() { };
 B3(int z) { c=z; }
 void show_B3() { cout <<"B3=   "<< c << "\n"; }
};
 
class D1: public B1, public B2, private B3 {
 int d;
 int g; 
 int r;
public:
 D1(int x, int y, int z, int i, int j, int k, int m, int l, int n) : B1(i,j),  B2(k,m), B3(l,n) { d=x; g=y; r=z;};
 void show_D1() { cout <<"D1=  "<< d << "\n"; show_B1(); show_B2(); show_B3();}
};
 
 
class D2: public  D1{
 int e;
public:
 D2(int x, int y, int z, int i, int j, int k, int m, int l, int n) : D1(y) { e=x;};
 void show_D2() { cout <<"D2=  "<< e << "\n"; show_D1();}
};
 
int main() {
D2 temp(100,200,300,400,500);
cout << "D2 temp(100,200,300,400,500);\n";
cout<< "\nСледуя иерархии класса D2: \n";
temp.show_D2();
getch();
return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2014, 21:40
Ответы с готовыми решениями:

Наследование классов. Копирование производных классов
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем...

Множественное наследование классов
Здравствуйте! Пытаюсь работать с наследованием, а конкретно со множественным наследованием классов....

Множественное наследование. Иерархия классов
Создать классы фигура, четырехугольник, квадрат и прямоугольник. Создать из них иерархию....

Возведение в степень (множественное наследование классов)
Добрый день. В коде реализовано возведение в степень. Я совсем запутался в классах. Не могу понять...

2
73 / 59 / 41
Регистрация: 25.06.2014
Сообщений: 359
29.10.2014, 00:37 2
Лучший ответ Сообщение было отмечено AlexHolmes как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <math.h>
 
using namespace std;
 
class B1{
    int b1;
public:
    B1() { };
    B1(int b) { b1 = b; }
    void show_B1() { cout << "B1=   " << b1 << "\n"; }
};
 
class B2{
    int b2;
public:
    B2() { };
    B2(int b) { b2 = b; }
    void show_B2() { cout << "B2=   " << b2 << "\n"; }
};
 
class B3{
    int b3;
public:
    B3() { };
    B3(int b) { b3 = b; }
    void show_B3() { cout << "B3=   " << b3 << "\n"; }
};
 
class D1 : public B1, public B2, private B3 {
    int d1;
public:
    D1(int x, int y, int z, int d) : B1(x), B2(y), B3(z) { d1 = d; };
    void show_D1() { show_B1(); show_B2(); show_B3(); cout << "D1=  " << d1 << "\n"; }
};
 
 
class D2 : public  D1{
    int d2;
public:
    D2(int x, int y, int z, int d, int dd) : D1(x,y,z,d) { d2 = dd; };
    void show_D2() { show_D1(); cout << "D2=  " << d2 << "\n"; }
};
 
int main() {
    D2 temp(100, 200, 300, 400, 500);
    cout << "D2 temp(100,200,300,400,500);\n";
    cout << "\nСледуя иерархии класса D2: \n";
    temp.show_D2();
    _getch();
    return 0;
}
1
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 77
29.10.2014, 00:49  [ТС] 3
Огромное спасибо, теперь разобралась)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2014, 00:49

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

Задача на множественное наследование, иерархия классов
Создать класс хвост, имеющий в качестве параметров длину и вид(строка). Определить конструкторы и...

Множественное наследование с использованием абстрактных базовых классов
тема: Множественное наследование с использованием абстрактных базовых классов, файлового...

Абстрактный базовый класс и множественное наследование (либо иерархия классов)
Помогите пожалуйста с задачей. Кое-что написал но еще далеко не все. Все ли пока правильно? ...

Множественное наследование с использованием абстрактных базовых классов, файлового ввода-вывода с применением потоков С++, функций обработки исключи
Создать программу с абстрактным базовым классом и множественным наследованием, реализовать в нем: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.