Страницы

Поиск по вопросам

понедельник, 10 февраля 2020 г.

Перегрузка оператора [дубликат]

#cpp


        
             
                
                    
                        
                            На этот вопрос уже дан ответ здесь:
                            
                        
                    
                
                        
                            Перегрузка оператора “+”
                                
                                    (1 ответ)
                                
                        
                                Закрыт 2 года назад.
            
                    
Не могу разобраться с перегрузкой оператора+. Хочу осуществить возможность к объекту
класса (fraction) добавлять число:

fraction fr(1,5);
int x = num;

fraction result;
result = x + fr;

    


Ответы

Ответ 1



Текущий инстанс: fraction& operator+=(int value) { this->... += value; return *this; } Новый инстанс: fraction operator+(int value) const { return fraction(...); } friend fraction operator+(int value, fraction const& f) { return fraction( value + f./*someoneDataMember*/); /* return ( f + value );*/ }

Ответ 2



Примерно так: class fraction{ int value_; public: fraction(int v): value_{v} { } const fraction& operator += (int lhs){ value_ += lhs; return *this; } fraction operator + (int lhs) const{ fraction tmp(value_); tmp += lhs; return tmp; } } Можно немного проще: ... fraction operator + (int lhs) const{ return fraction (value_ + lhs); } ... Это если реализация простая, в общем случае предпочтительно реализовывать + через += для устранения лишнего дублирования кода.

Комментариев нет:

Отправить комментарий