Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2015, 15:10   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию operator +=

Всем доброго дня !

Подскажите пожалуйста правильно ли я реализовал operator += ?

Код:
#include <stdio.h>
#include <conio.h>

class Vita

{

private:

	int *x;

public:

	Vita() : x(new int(0)) {}
        Vita(int a) : x(new int(a)) {}
        Vita(const Vita &rhs) : x(new int(rhs.fvf())) {}
        ~Vita() {delete x;}
         int fvf() const {return *x;}
         void hgh(int a) const {*x = a;}
         Vita & operator = (const Vita &rhs)
         {
              if (this == &rhs) return *this;
              *x = *rhs.x;
              return *this;
	}

	void operator += (const Vita &rhs)  
        {
              Vita Temp(*x + *rhs.x);
             *this = Temp;
	}
};
RAFA91 вне форума Ответить с цитированием
Старый 26.07.2015, 15:46   #2
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Код:
Vita& operator +=(const Vita &rhs)  
{
    return *this = Vita(*x + *rhs.x);
}
PS:
Все операторы, что либо возвращают.
В вашем случаи себя.

например 2 += 3, говорит, что мы хотим прибавить к первому второе, при этом первое равно результату.
например 2 + 3, говорит, что мы хотим прибавить к первому второе, при этом результат, это отдельный объект.
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 26.07.2015 в 15:49.
Perchik71 вне форума Ответить с цитированием
Старый 26.07.2015, 16:45   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
Код:
Vita& operator +=(const Vita &rhs)  
{
    return *this = Vita(*x + *rhs.x);
}
может тогда уж лучше

Код:
void operator += (const Vita &rhs)  
        {
              *x += *rhs.x);
        }
какой смысл тут возвращать тип ?

да и
Код:
return *this = Vita(*x + *rhs.x);
не сильно вызывает доверия
RAFA91 вне форума Ответить с цитированием
Старый 26.07.2015, 17:03   #4
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

смысл я описал выше.
Ну раз не вызывает, я ничем Вам помочь не смогу.
Эта запись тупо упакованная ваша.

Вам примерчик
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 26.07.2015 в 17:06.
Perchik71 вне форума Ответить с цитированием
Старый 26.07.2015, 20:59   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
какой смысл тут возвращать тип ?
CSomeClass one;
CSomeClass two;
two = one += 10;
waleri вне форума Ответить с цитированием
Старый 27.07.2015, 12:58   #6
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
CSomeClass one;
CSomeClass two;
two = one += 10;
что это ?

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
cпасибо Вам за помощь , буду думать.

Последний раз редактировалось RAFA91; 27.07.2015 в 13:09.
RAFA91 вне форума Ответить с цитированием
Старый 27.07.2015, 13:22   #7
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
что это ?
Это пример, где может потребоваться возвращаемое значение из оператора +=

Определяйте операторы примерно так:
Код:
Type & operator+= ( const Type & rhv ) 
{
   //...
   return *this ;
}
Croessmah вне форума Ответить с цитированием
Старый 27.07.2015, 15:37   #8
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
Цитата:
Сообщение от waleri Посмотреть сообщение
CSomeClass one;
CSomeClass two;
two = one += 10;
что это ?
Так будет проще понять:
Код:
void func(CSomeClass &myClass){
    //...
}
...
    CSomeClass one;
    //...
    func(one+=10);  //  т.е. добавляем 10 и передаем класс в функцию
...
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 28.07.2015, 15:28   #9
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Так будет проще понять:
Код:
void func(CSomeClass &myClass){
    //...
}
...
    CSomeClass one;
    //...
    func(one+=10);  //  т.е. добавляем 10 и передаем класс в функцию
...
Спасибо!!!
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
operator char*() + operator[](uint) riden Общие вопросы C/C++ 3 17.02.2013 08:45
operator= _Bers Общие вопросы C/C++ 2 18.04.2012 06:45
operator== stenl1 Общие вопросы C/C++ 11 27.07.2011 06:38
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38
operator<< Наташенька Общие вопросы C/C++ 6 08.06.2009 18:59