Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345

Перегруженный оператор вывода

19.07.2013, 21:51. Показов 1472. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть базовый класс Точка и его наследник Круг. Как в Круге использовать operator<< для Точки?
Надо вывести координаты центра круга

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
class CPoint
{
    friend std::ostream &operator<<(std::ostream &out, const CPoint &point);
 
public:
    CPoint(double x=0.0, double y=0.0);
 
protected:
    double mX, mY;
};
 
class CCircle : public CPoint
{
    friend std::ostream &operator<<(std::ostream &out, const CCircle &circle);
 
public:
    CCircle(double x=0.0, double y=0.0, double radius=1.0);
 
protected:
    double mRadius;
};
 
 
 
 
// CPoint
...
std::ostream &operator<<(std::ostream &out, const CPoint &point)
{
    out << "Точка: Координаты=[" << point.mX << ", " << point.mY << "]";
    return out;
}
 
 
 
 
// CCircle
...
std::ostream &operator<<(std::ostream &out, const CCircle &circle)
{
    //std::cout << circle.CPoint::CPoint;  // не работает
    // как в этом месте использовать перегруженный оператор вывода из базового класса?
    return out;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.07.2013, 21:51
Ответы с готовыми решениями:

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

Перегруженный оператор ввода/вывода для struct
Доброго времени суток, форумчане! У меня возник вопрос с перегрузкой оператора ввода на с++ написал свою структуру, зафрендил для нее...

перегруженный оператор <<
подскажите как перегрузить оператор &lt;&lt; для класса как описать само перегружение friend ostream&amp; operator &lt;&lt; (ostream &amp;c,...

17
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
19.07.2013, 21:57
C++
1
std::cout << static_cast<const CPoint&>(circle) << std::endl;

Не по теме:

Наследование круга от точки выглядит как минимум странно.

2
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
19.07.2013, 21:58
C++
1
return (out << static_cast<CPoint const&>(circle));
1
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
19.07.2013, 22:09  [ТС]
спасибо . все работает
0
19.07.2013, 23:23

Не по теме:

Цитата Сообщение от BigLow Посмотреть сообщение
Есть базовый класс Точка и его наследник Круг.
Пример неудачного наследования. Так логичнее: есть класс Круг, в нём, одно из полей (центр), объект класса Точка.

2
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 10:31  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Наследование круга от точки выглядит как минимум странно.
Цитата Сообщение от alsav22 Посмотреть сообщение
Пример неудачного наследования. Так логичнее: есть класс Круг, в нём, одно из полей (центр), объект класса Точка.
это не я придумал, а Дейтел "Как программировать на C++" хотя я согласен с вами. круг содержит точку(центр круга), но не является точкой
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2013, 10:36
Цитата Сообщение от BigLow Посмотреть сообщение
это не я придумал, а Дейтел "Как программировать на C++"
Какая страница?
0
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 10:48  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Какая страница?
вся книга. где начинается наследование классов, так и до самого конца. Точка->Круг->Цилиндр, он только так объясняет наследование, через геометрические фигуры
0
20.07.2013, 10:50

Не по теме:

Цитата Сообщение от BigLow Посмотреть сообщение
Точка->Круг->Цилиндр
Спасибо, я давно хотел придумать какое-нибудь объяснение почему игнорирую эту книгу вопреки ее популярности :)

0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2013, 11:00
Цитата Сообщение от BigLow Посмотреть сообщение
вся книга. где начинается наследование классов, так и до самого конца. Точка->Круг->Цилиндр, он только так объясняет наследование, через геометрические фигуры
И у него Круг - наследник Точки?
Цитата Сообщение от 0x10 Посмотреть сообщение
Спасибо, я давно хотел придумать какое-нибудь объяснение почему игнорирую эту книгу вопреки ее популярности
Это ещё нужно посмотреть, как в книге...
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2013, 11:04
И где здесь Точка? Или приведите страницу...
Миниатюры
Перегруженный оператор вывода  
0
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 11:05  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
И у него Круг - наследник Точки?
да. сейчас наследование изучаю и вот что уже сделано:
Кликните здесь для просмотра всего текста
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
class CPoint
{
    friend std::istream &operator>>(std::istream &in, CPoint &point);
    friend std::ostream &operator<<(std::ostream &out, const CPoint &point);
 
public:
    CPoint(double x=0.0, double y=0.0);
    ~CPoint();
    void SetX(double x);
    void SetY(double y);
    void SetPoint(double x, double y);
    double GetX() const;
    double GetY() const;
 
protected:
    double mX, mY;
};
 
 
 
 
 
class CCircle : public CPoint
{
    friend std::istream &operator>>(std::istream &in, CCircle &circle);
    friend std::ostream &operator<<(std::ostream &out, const CCircle &circle);
 
public:
    CCircle(double x=0.0, double y=0.0, double radius=1.0);
    ~CCircle();
    void SetRadius(double radius);
    double GetRadius() const;
    double GetArea() const;
 
protected:
    double mRadius;
};
 
 
 
 
 
class CCylinder : public CCircle
{
    friend std::istream &operator>>(std::istream &in, CCylinder &cylinder);
    friend std::ostream &operator<<(std::ostream &out, const CCylinder &cylinder);
 
public:
    CCylinder(double x=0.0, double y=0.0, double radius=1.0, double height=1.0);
    ~CCylinder();
    void SetHeight(double height);
    double GetHeight() const;
    double GetArea() const;
    double GetVolume() const;
 
protected:
    double mHeight;
};


может посоветуете хорошую книгу по наследованию?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
20.07.2013, 11:06
alsav22, ок, погорячился. Плюсую за номер страницы.
0
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 11:07  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
И где здесь Точка? Или приведите страницу...
Как программировать на C++ 2001г. страница 552, глава 9 Наследование

Добавлено через 33 секунды
у меня наверно другая книга
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
20.07.2013, 11:09
Цитата Сообщение от BigLow Посмотреть сообщение
может посоветуете хорошую книгу по наследованию?
Нормально он излагает наследование. Не обращайте внимание на пример. Он неудачный, но правильный, если представлять круг на плоскости как точку центра окружности и длину радиуса, то круг является точкой на плоскости. А пример основан именно на этом.

Добавлено через 44 секунды
Цитата Сообщение от BigLow Посмотреть сообщение
у меня наверно другая книга
Там еще по номеру издания нужно смотреть.. Их уже минимум 5, и все они отличаются.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
20.07.2013, 11:12
Цитата Сообщение от BigLow Посмотреть сообщение
Как программировать на C++ 2001г. страница 552, глава 9 Наследование
Сейчас посмотрел. Печально, но да - в этом издании такой пример.
Я бы взял что-нибудь посвежее, пусть и тех же авторов.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2013, 11:20
Цитата Сообщение от Мимино Посмотреть сообщение
Он неудачный, но правильный, если представлять круг на плоскости как точку центра окружности и длину радиуса, то круг является точкой на плоскости. А пример основан именно на этом.
Согласен, можно логику и так выстроить. Точка, добавляем радиус - Круг, добавляем высоту - Цилиндр. Трудно спорить с проффесионалами, но на мой (непроффесионильный) взгляд, не очень как-то...
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
20.07.2013, 11:23
Цитата Сообщение от alsav22 Посмотреть сообщение
Согласен, можно логику и так выстроить. Точка, добавляем радиус - Круг, добавляем высоту - Цилиндр. Трудно спорить с профессионалами, но на мой (непрофессиональный) взгляд, не очень как-то...
Пусть хоть на коровах объясняет. Главное, чтобы принципы наследования были понятны. А это у автора получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2013, 11:23
Помогаю со студенческими работами здесь

Перегруженный оператор +
Товарищи программисты не могу понять вот этот кусок кода: dist4 = dist1 + dist2 + dist3; у нас есть конструктор с двумя параметрами, но...

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

Перегруженный оператор
MathClass = Harry; Раньше я думал, что перегрузка - это предоставление оператору функций, которых, он изначально не имел. Что...

Функции и перегруженный оператор
Помогите реализовать на С++: 1.Определить пользовательский тип данных fraction (дробь), представляющий собой структуру из 2х полей:...

Перегруженный оператор ввода
Всем привет, как правильно создать перегруженный оператор ввода для инициализации данных об обьекте к примеру class Planet{ ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru