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

operator+ overload - C++

Восстановить пароль Регистрация
 
mercury1987
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 10
06.02.2014, 16:02     operator+ overload #1
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
#include <iostream>
 
 
class point
{
    private:
        int x;
        int y;
 
    public:
        point():
          x(0),
              y(0) { }
          point(point& src){
             x = src.x;
             y = src.y;
            }
        void set_x(int X) { x=X; }
        int get_x () const { return x; }
        void set_y(int Y) { y=Y; }
        int get_y () const { return y; }
        point& operator= (const point& );
        friend point& operator+(const point& a, const point& b); 
};
 
point& point::operator= (const point& ob){
 
    if(this != &ob)
    { 
        x = ob.x;
        y = ob.y;
    }
 
    return *this;
}
 
point& operator+(const point& a, const point& b){
    point tmp;
    tmp.set_x(a.get_x()+b.get_x());
    tmp.set_y(a.get_y()+b.get_y());
        return (tmp);
 
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    point ob;
    point ob1;
    point ob3;
    ob.set_x(10);
    ob.set_y(13);
    ob1.set_x(10);
    ob1.set_y(13);
    ob3 = ob+ob1;
    std::cout << ob3.get_x() << " " << ob3.get_y();
    
    
    return 0;
}
можете объяснить почему программа не выводит сложение объектов ob и ob1?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2014, 16:02     operator+ overload
Посмотрите здесь:

C++ вызов функции overload
C++ overload функции
operator char() или operator int() C++
Friend function and Overload <<(>>) C++
C++ Почему возникает ошибка? error: ambiguous overload for 'operator>>'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
06.02.2014, 16:08     operator+ overload #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от mercury1987 Посмотреть сообщение
point& operator+(
Вы возвращаете временный объект по ссылке.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
06.02.2014, 16:11     operator+ overload #3
mercury1987, а где конструктор? где оператор копирования? Вы в операторе + используете временную переменную Вашего класса, которая потом возвращается. То есть, переменная слева от равно(при складывании) должна быть идентичная tmp после возврата, а для этого надо конструктор копирования. еще и временный объект по ссылке возвращаете.
mercury1987
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 10
06.02.2014, 16:15  [ТС]     operator+ overload #4
конструктор копирования в самом классе реализован вот:
C++
1
2
3
4
point(point& src){
             x = src.x;
             y = src.y;
            }
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
06.02.2014, 16:16     operator+ overload #5
Цитата Сообщение от mercury1987 Посмотреть сообщение
конструктор копирования в самом классе реализован вот:
простите не увидел. структура оформления у Вас забавная
mercury1987
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 10
06.02.2014, 16:19  [ТС]     operator+ overload #6
спасибо. решилось.
Yandex
Объявления
06.02.2014, 16:19     operator+ overload
Ответ Создать тему
Опции темы

Текущее время: 22:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru