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

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

Войти
Регистрация
Восстановить пароль
 
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
#1

Перегрузка - C++

14.08.2010, 10:26. Просмотров 604. Ответов 11
Метки нет (Все метки)

Мне задали там описать ромб и найти периметр и площадь вывести на екаран отдельным методом ( ето все выполнимо) но вот что значит перегрузить операцыю << ??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2010, 10:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка (C++):

Перегрузка в виде метода VS Перегрузка в виде функции друг - C++
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде функции друг? Добавлено через 4...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

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

Перегрузка в c++ - C++
Собственно для чего нужна перегрузка функций или операторов ?

перегрузка >> и << - C++
Решил попробовать перегрузить операции ввода и вывода,почему то выводятся 0, вместо нужных значений,подскажите в чем косяк #include...

Перегрузка new - C++
Дайте примеры на перегрузку. #define n ... // Некая целая константа class a { ... }; // Некий класс a *p=new a; // Здесь должен быть...

11
garkyn
2 / 2 / 1
Регистрация: 13.08.2010
Сообщений: 10
14.08.2010, 10:51 #2
Ну, начать можно наверно с этого Перегрузка оператора - wiki
0
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
14.08.2010, 12:36 #3
C++
1
2
3
4
5
friend ostream& operator<<(ostream &os,myclass &obj) // myclass ваш класс с данными.
{
os<<obj.info();
return os;
}
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
14.08.2010, 12:47  [ТС] #4
что такое info ?)
0
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
14.08.2010, 13:07 #5
Цитата Сообщение от Andryushchenko Посмотреть сообщение
что такое info ?)
ну, Sekt предположил что вы так назвали переменную-член клааса храньящую периметр/полщадь ромба. на самом деле, там может быть любое имье.

Добавлено через 3 минуты
Цитата Сообщение от Andryushchenko Посмотреть сообщение
что значит перегрузить операцыю
ну смотрти. cout<<x - значит вывести на экран значение переменной х. но ты же не можешь написать cout<<obj, компилятор просто не будет знать что ему выводить. но существует метод, называемый перегрузкой функции который позволяет тебе определять что будет выводится на экран. реализуется
это с помощю дружественных функций. знаешь что это?
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
14.08.2010, 13:17  [ТС] #6
понял спасиб ща вставлю в свою часть програмы

Добавлено через 10 минут
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
79
80
81
82
83
84
85
86
87
88
89
90
{Class.h}
#include "stdafx.h"
#include "ol.h"
class figur: public Class1
{
private:
    double x1, x2, x3, x4, y1, y2, y3, y4;
public:
    figur (double, double, double, double, double, double, double, double);
    int pr (int, int, int, int, int);
    void show (int, int, int, int, int);
};
{ol.h}
#include "stdafx.h"
class Class1
{
    double x1, x2, x3, x4, y1, y2, y3, y4;
public:
    Class1();
    int length(double, double, double, double);
};
 
{2.3.cpp}
#include "stdafx.h"
#include "ol.h"
#include "math.h"
Class1::Class1()
{
 
};
int Class1::length(double x1, double x2, double y1, double y2)
{
    double l;
    l = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
    return l;
}
{class.cpp}
#include "stdafx.h"
#include <iostream>
#include "Class.h"
using namespace std;
    figur::figur (double _x1, double _x2, double _x3, double _x4, double _y1, double _y2, double _y3, double _y4)
    {
        x1 = _x1;
        x2 = _x2;
        x3 = _x3;
        x4 = _x4;
        y1 = _y1;
        y2 = _y2;
        y3 = _y3;
        y4 = _y4;
    }
    int figur::pr (int a, int b, int c, int d, int H)
    {
        int Perimeter, square;
        Perimeter = a+b+c+d;
        cout <<"\nPerimeter: "<<Perimeter;
        square = a*H;
        return square;
    }
    ostream& operator<<(ostream &os,const figur &obj) // myclass ваш класс с данными.
    {
    os<<obj.Class1();
    return os;
    }
    void figur::show (int a, int b, int c, int d, int H)
    {
        cout <<"First point: ("<<x1<<","<<y1<<")";
        cout <<"\nSecond point: ("<<x2<<","<<y2<<")";
        cout <<"\nThird point: ("<<x3<<","<<y3<<")";
        cout <<"\nFourth point: ("<<x4<<","<<y4<<")";
        cout <<"\nSquare: "<< pr(a, b, c, d, H);
    }
{Program.cpp}
#include "stdafx.h"
#include "Class.h"
#include "conio.h"
int main()
{
int a, b, c, d, H;
figur object(2, 1, 3, 4, 3, 1, 1, 3);
a = object.length(2, 1, 3, 1);
b = object.length(1, 3, 1, 1);
c = object.length(3, 4, 1, 3);
d = object.length(4, 2, 3, 3);
H = object.length(2, 2, 3, 1);
object.show(a, b, c, d, H);
getch();
return 0;
}
воть ребят токо ошыбку выбивает мб я не так что то напутал?
Error 1 error C2274: 'function-style cast' : illegal as right side of '.' operator c:\users\admin\documents\visual studio 2008\projects\учусь\2.3\class.cpp 26 2.3
Вот я немного переменил там перпутал не тот класс подставил
0
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
14.08.2010, 13:30 #7
Andryushchenko, во первых ты объявляешь функцию length как int, а реализуешь как long. я бы оба сделал double. вообще, сделай все типы double. я не понял, что делает функция pr?
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
14.08.2010, 13:31  [ТС] #8
pr ето периметр:Д я с етой перегрузкой совсем запутался ща переделаю все в Инт
0
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
14.08.2010, 13:36 #9
ты вообще сам то разбираешь что накодил? оО

Добавлено через 27 секунд
на кой насследование?
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
14.08.2010, 13:44  [ТС] #10
ну ... препод намекал что былоб не плохо использавать вашы знания с предыдущих лаб и чото я щас начинаю думать что он не наследование имел виду:Д а френд функцыю скорее всего вот скоко я сижу тут и смотрю скорее всего ща пошурику перепишу лабу
0
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
14.08.2010, 13:58 #11
Andryushchenko, а так не легче?
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
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
class figur
{
private:
    double x1, x2, x3, x4, y1, y2, y3, y4;
public:
    figur (double, double, double, double, double, double, double, double);
    friend ostream& operator<<(ostream& os, figur & p);
    double ploshad();
    double perimetr();
};
figur::figur (double _x1, double _x2, double _x3, double _x4, double _y1, double _y2, double _y3, double _y4)
        {
                x1 = _x1;
                x2 = _x2;
                x3 = _x3;
                x4 = _x4;
                y1 = _y1;
                y2 = _y2;
                y3 = _y3;
                y4 = _y4;
        }
double figur::perimetr()
{
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))*4;
}
double figur::ploshad()
{
    return sqrt((x1-x2)*(y1-y2)*(x1-x2)*(y1-y2))*2;
}
ostream& operator<<(ostream& os, figur & p)
{
    os<<"Perimetr: "<<p.perimetr()<<" ";
    os<<"Ploshad: "<<p.ploshad();
    return os;
}
int main()
{
    figur a(0,3,0,-3,4,0,-4,0);
    cout<<a;
    system("pause");
    return 0;
}
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
14.08.2010, 14:40  [ТС] #12
Все ребят я переделал все норм пашет
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2010, 14:40
Привет! Вот еще темы с ответами:

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

Перегрузка << и >> - C++
помогите сделать так чтобы &lt;&lt; и &gt;&gt; в int main() работали... Printers.h class Printers { public: ...

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

перегрузка [] - C++
Здарова никак не могу перегрузить имеется класс Int2 моделирующий int я перегрузил rvalue тоесть при вызове int a; Int2...


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

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

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