-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
1

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

28.11.2015, 21:25. Показов 8659. Ответов 8

Author24 — интернет-сервис помощи студентам
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
 
class Base {
    int b;
public:
    friend istream& operator >> (istream&stream, Base& ob);
    friend ostream& operator << (ostream&stream, Base ob);
    friend fstream& operator >> (fstream&stream, Base& ob);
    friend fstream& operator << (fstream&stream, Base ob);
};
 
istream& operator >> (istream&stream, Base& ob)
{
    stream >> ob.b;
    return stream;
}
 
ostream& operator << (ostream&stream, Base ob)
{
    stream << ob.b;
    return stream;
}
 
fstream& operator >> (fstream&stream, Base& ob)
{
    stream >> ob.b;
    return stream;
}
 
fstream& operator << (fstream&stream, Base ob)
{
    stream << ob.b;
    return stream;
}
 
class Der:public Base {
    string m;
public:
    friend istream& operator >> (istream&stream, Der& ob);
    friend ostream& operator << (ostream&stream, Der ob);
    friend fstream& operator >> (fstream&stream, Der& ob);
    friend fstream& operator << (fstream&stream, Der ob);
};
 
istream& operator >> (istream&stream, Der& ob)
{
    stream >> ob.m;
    return stream;
}
 
ostream& operator << (ostream&stream, Der ob)
{
    stream << ob.m;
    return stream;
}
 
fstream& operator >> (fstream&stream, Der& ob)
{
    stream >> ob.m;
    return stream;
}
 
fstream& operator << (fstream&stream, Der ob)
{
    stream << ob.m;
    return stream;
}
 
int main()
{
    Der ob;
    cin >> ob;
    cout << ob;
    return 0;
}
Как перегрузить ввод и вывод, чтобы при вводе и выводе объектов класса Der можно было вводить компоненты наследуемые от класса Base?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2015, 21:25
Ответы с готовыми решениями:

При раздельной компиляции не работает перегрузка операторов ввода-вывода
разделил программу и при компиляции компилятор ругается на объявление перегрузки операторов ввода...

Перегрузка оператора при наследовании
Здравствуйте, подскажите пожалуйста, как избежать следующей ошибки без явного определения в...

Перегрузка операторов при наследовании
Есть базовый(StringType) и производный(tcomplex) классы. Соотвественно это строка и комплексное...

Перегрузка ввода и вывода
Ребят столкнулся с такой проблемой что не работает перегрузка и я не могу понять в чём ошибка вроде...

8
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
28.11.2015, 21:29 2
artart96,
C++
1
2
3
4
5
istream& operator >> (istream&stream, Der& ob)
{
    stream >> ob.m >> ob.b;
    return stream;
}
0
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
28.11.2015, 21:38  [ТС] 3
Добавлено через 37 секунд
Цитата Сообщение от SuperKir Посмотреть сообщение
stream >> ob.m >> ob.b;
Переменная b закрыта для Der.
0
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
28.11.2015, 21:43 4
artart96, а, ну логично, она у тебя в private находится и не наследуется, вынеси ее в protected
0
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
28.11.2015, 21:45  [ТС] 5
Цитата Сообщение от SuperKir Посмотреть сообщение
artart96, а, ну логично, она у тебя в private находится и не наследуется, вынеси ее в protected
В производный класс - наследуется все! И private и protected и public!
0
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
28.11.2015, 21:48 6
artart96, да, но доступа к любому методу и свойству с private ты иметь не будешь.
0
-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
28.11.2015, 21:51  [ТС] 7
Цитата Сообщение от SuperKir Посмотреть сообщение
artart96, да, но доступа к любому методу и свойству с private ты иметь не будешь.
Это я прекрасно знаю.Я так понимаю, перегрузку при наследовании ты не знаешь.
0
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
28.11.2015, 21:58 8
artart96, перегрузка то наследуется, вот только как тебе это поможет обратиться к свойству, к которому не имеется доступ?
0
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
28.11.2015, 22:03 9
Лучший ответ Сообщение было отмечено artart96 как решение

Решение

Кликните здесь для просмотра всего текста
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
class Base {
protected:  
    int b;
public:
    friend istream& operator >> (istream&stream, Base& ob);
    friend ostream& operator << (ostream&stream, Base ob);
};
 
istream& operator >> (istream&stream, Base& ob)
{
    stream >> ob.b;
    return stream;
}
 
ostream& operator << (ostream&stream, Base ob)
{
    stream << ob.b;
    return stream;
}
 
class Der :public Base {
    string m;
public:
    friend istream& operator >> (istream&stream, Der& ob);
    friend ostream& operator << (ostream&stream, Der ob);
};
 
istream& operator >> (istream&stream, Der& ob)
{
    stream >> ob.m >> ob.b;
    return stream;
}
 
ostream& operator << (ostream&stream, Der ob)
{
    stream << ob.m << " " << ob.b;
    return stream;
}
 
 
int main()
{
    Base x;
    cin >> x;
    cout << x << endl;
    Der ob;
    cin >> ob;
    cout << ob << endl;
    system("pause");
    return 0;
}

Перегрузка ввода и вывода при наследовании
1
28.11.2015, 22:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2015, 22:03
Помогаю со студенческими работами здесь

Перегрузка вывода и ввода
Здравствуйте прошу помочь ,написал программу в ней нужно перегрузить вывод и ввод ,как это можно...

Перегрузка ввода и вывода
Помогите пожалуйста перегрузить операцию ввода для шаблонного чтобы заполнить массив или подскажите...

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

Перегрузка файлового ввода-вывода
Здравствуйте! У меня вопрос такой вот: для файлового ввода-вывода сколько надо функций...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru