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

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

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

operator+ overload - C++

06.02.2014, 16:02. Просмотров 273. Ответов 5
Метки нет (Все метки)

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 функции
C++ Чем "operator *=" отличается от "operator *"?
operator char() или operator int() C++
C++ как overload ++OBJ и --OBJ
Friend function and Overload <<(>>) C++
C++ Почему возникает ошибка? error: ambiguous overload for 'operator>>'
Странная перегрузка операторов (Error: ambiguous overload for 'operator[]') C++
Error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' C++
Реализация operator + через operator += C++
Перегрузка (Overload) C++
Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 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
Ответ Создать тему
Опции темы

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