Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
#1

Перегрузка операции ввода/вывода - C++

28.02.2013, 21:35. Просмотров 1306. Ответов 18
Метки нет (Все метки)

В лабораторной говорится: "Перегрузить операции ввода и вывода 2 способами: внутренним и внешним". Что такое внешним я представляю, а внутренний - это как?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2013, 21:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка операции ввода/вывода (C++):

Перегрузка операции ввода и вывода. Выдает ошибку - C++
Совместил сразу перегрузку двух операций, выдало дофига ошибок. В чем проблема, помогите разобраться. #include <iostream> using...

Перегрузка операции вывода - C++
Помогите пожалуйста. Проблема в том, что компилятору не нравятся поля. Текст перегрузки: ostream &operator<< (ostream &out, list z) ...

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

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

Перегрузка операторов ввода\вывода - C++
Вот такой простенький пример описан во многих постах, есть в некоторых видео но у меня в компиляторе mvs 2015, при компиляции выдает...

Перегрузка операторов ввода вывода - C++
ребята болит уже голова)) main.cpp #include "myStr.h" int main() { myStr myS("ok"); cout<<myS<<endl;//надо чтоб...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ITcrusader
Эксперт C++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
28.02.2013, 21:39 #2
Внутренний - это как член класса.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.02.2013, 21:50  [ТС] #3
ITcrusader, не могли бы пример?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 22:09 #4
Перегрузка оператора
Там, в первом посте, + перегружается в классе.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.02.2013, 22:50  [ТС] #5
alsav22, то перегрузка +. Это элементарно. А вот как перегрузить ввод/вывод внутри?

Добавлено через 7 минут
Загвоздка именно со словом "внутри". Это тогда уже не будет cout << obj; А как?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 22:58 #6
Цитата Сообщение от Kgfq Посмотреть сообщение
А вот как перегрузить ввод/вывод внутри?
Также.
Цитата Сообщение от Kgfq Посмотреть сообщение
Загвоздка именно со словом "внутри".
Внутри, я так понимаю, - значит в классе.

Добавлено через 2 минуты
И поподробней, как вопрос формулируется в лаб-ой. Перегрузить для кого-чего сказано?
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.02.2013, 23:01  [ТС] #7
alsav22, цитирую:

"
Вид перегрузки операций ввода и вывода
Внешняя
Внутренняя
"

Если перегрузить << скажем внутри класса, то написать cout << obj не получится. Хотя бы потому, что cout не умеет его принимать
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 23:10 #8
Цитата Сообщение от Kgfq Посмотреть сообщение
Хотя бы потому, что cout не умеет его принимать
Для того и пишется перегрузка, чтобы умел.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.02.2013, 23:12  [ТС] #9
alsav22, так тогда нужно перегружать вне, а не внутри
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 23:24 #10
Это как метод класса(внутри):
C++
1
2
3
4
5
ostream& operator<<(ostream& out)
{
     out << *this;
     return out;
}
Это как дружественная функция(снаружи, для объектов класса A):
C++
1
2
3
4
5
friend ostream& operator<<(ostream& out, const A& obj)
{
    out << obj;
    return out;
}
Добавлено через 5 минут
Цитата Сообщение от Kgfq Посмотреть сообщение
alsav22, так тогда нужно перегружать вне, а не внутри
Чтобы так писать: cout << obj;, то вне. Если внутри, то писать нужно так: obj << cout; Непривычно, но работать будет правильно. Чтобы было привычно, перегрузку делают в виде дружественной фнкции.

Добавлено через 3 минуты
Цитата Сообщение от Kgfq Посмотреть сообщение
alsav22, цитирую:
"
Вид перегрузки операций ввода и вывода
Внешняя
Внутренняя
"
Я спросил: для кого-чего перегрузка написано? Для класса?
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
28.02.2013, 23:28 #11
Если я не ошибаюсь, то перегружений оператор ввода/вывода не может быть членом класса!
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.02.2013, 23:31  [ТС] #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Я спросил: для кого-чего перегрузка написано? Для класса?
Походу, да

obj << cout - до этого я довел, но уж больно непривычно
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 23:31 #13
Ошибаетесь, очень даже может. 10 пост, первый код. Только синтаксис при использовании будет непривычным. obj << cout;
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
28.02.2013, 23:34 #14
Тогда почему не хочет компилировать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
class A
{
    ostream& operator<<(ostream& out)
{
     out << *this;
     return out;
}
};
 
int main()
{}
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2013, 23:46 #15
Что пишет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 23:46
Привет! Вот еще темы с ответами:

Перегрузка операций ввода/вывода - C++
Доброго времени суток господа и дамы! Нужно решить один нюанс. Никак не получается. Есть код: #include &lt;iostream&gt; #include &lt;stdlib.h&gt;...

Перегрузка потокового ввода-вывода - C++
Доброго времени суток!!! Возникла такая проблема: необходимо сделать перегрузку операций &lt;&lt; и &gt;&gt;. Вот что у меня есть: friend...

Перегрузка операций ввода/вывода - C++
Всем доброго времени суток! Подскажите, в чем ошибка - есть класс, в котором присутствуют 2 функции-друга, которые перегружают операции...

Перегрузка потокового ввода/вывода - C++
Вот сама перегрузка ostream&amp; operator&lt;&lt; (ostream&amp; out, Poli&amp; outstream) { out&lt;&lt;&quot;Степень полинома=&quot;&lt;&lt;outstream.n&lt;&lt;endl; for(int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.02.2013, 23:46
Ответ Создать тему
Опции темы

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