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

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

Войти
Регистрация
Восстановить пароль
 
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

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

19.07.2013, 21:51. Просмотров 689. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2013, 21:51     Перегруженный оператор вывода
Посмотрите здесь:

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

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

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

Функтор и перегруженный оператор - C++
захотел понять многопоточность в новом стадарте с++11 - смотрю http://sergeyteplyakov.blogspot.ru/2012/05/c-11-faq.html#std-threads - вижу...

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

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

Глобальный перегруженный оператор - C++
Как организовать работу глобального перегруженного оператора &quot;-&quot;, который должен сравнивать 5 массивов(экземпляры класса). Помогите,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
19.07.2013, 21:57     Перегруженный оператор вывода #2
C++
1
std::cout << static_cast<const CPoint&>(circle) << std::endl;

Не по теме:

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

gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
19.07.2013, 21:58     Перегруженный оператор вывода #3
C++
1
return (out << static_cast<CPoint const&>(circle));
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
19.07.2013, 22:09  [ТС]     Перегруженный оператор вывода #4
спасибо . все работает
alsav22
19.07.2013, 23:23
  #5

Не по теме:

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

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

Не по теме:

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

alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2013, 11:00     Перегруженный оператор вывода #10
Цитата Сообщение от BigLow Посмотреть сообщение
вся книга. где начинается наследование классов, так и до самого конца. Точка->Круг->Цилиндр, он только так объясняет наследование, через геометрические фигуры
И у него Круг - наследник Точки?
Цитата Сообщение от 0x10 Посмотреть сообщение
Спасибо, я давно хотел придумать какое-нибудь объяснение почему игнорирую эту книгу вопреки ее популярности
Это ещё нужно посмотреть, как в книге...
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2013, 11:04     Перегруженный оператор вывода #11
И где здесь Точка? Или приведите страницу...
Миниатюры
Перегруженный оператор вывода  
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 11:05  [ТС]     Перегруженный оператор вывода #12
Цитата Сообщение от 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;
};


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

Добавлено через 33 секунды
у меня наверно другая книга
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 11:09     Перегруженный оператор вывода
Еще ссылки по теме:

Перегруженный постфиксный оператор ++ - C++
Есть задание: Создать класс &quot;нота&quot;: название, октава, продолжительность звучания. Производные: &quot;звук&quot; (частота) и &quot;изображение&quot;...

Не работает перегруженный оператор - C++
Привет, у меня есть класс такой: class Sterling { private: long pounds = 0; int shillings = 0; int pennys = 0; public:...

Не вызывается перегруженный оператор - C++
#include&lt;iostream&gt; using namespace std; struct dates { int num; int count; dates *back; dates *forward; }; class...

Неправильно работает перегруженный оператор - C++
#include &lt;iostream&gt; using namespace std; class PhoneNumber { friend ostream &amp;operator &lt;&lt; (ostream &amp;, const PhoneNumber &amp;); ...

Не выполняется перегруженный оператор присваивания - C++
Подскажите пожалуйста, почему ругается компилятор? Я только начал изучать С++ по книге Шилдта, и там написана вот эта программа. В 93...


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

Или воспользуйтесь поиском по форуму:
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
20.07.2013, 11:09     Перегруженный оператор вывода #15
Цитата Сообщение от BigLow Посмотреть сообщение
может посоветуете хорошую книгу по наследованию?
Нормально он излагает наследование. Не обращайте внимание на пример. Он неудачный, но правильный, если представлять круг на плоскости как точку центра окружности и длину радиуса, то круг является точкой на плоскости. А пример основан именно на этом.

Добавлено через 44 секунды
Цитата Сообщение от BigLow Посмотреть сообщение
у меня наверно другая книга
Там еще по номеру издания нужно смотреть.. Их уже минимум 5, и все они отличаются.
Yandex
Объявления
20.07.2013, 11:09     Перегруженный оператор вывода
Ответ Создать тему
Опции темы

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