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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2016, 21:21   #1
9398
Пользователь
 
Регистрация: 12.02.2016
Сообщений: 10
По умолчанию Реализовать перегрузку operator+() для пользовательского класса - C++

Есть класс ДРОБЬ, его члены ЧИСЛИТЕЛЬ И ЗНАМЕНАТЕЛЬ, а методы - конструктор и методы вывода. исходные данные - 4 обычные дроби. мне нужно реализовать оператор перегрузки (operator+) для добавления двух первых дробей. Подскажите, пожалуйста, как это сделать, а то не могу понять никак. Ниже - код без оператора
Код:
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
 
class ObDrob
{
public:
    int chislitel;
    int znamenatel;
    ObDrob()
    {
        cout << "Введите числитель:\n";
        cin >> chislitel;
        do {
            cout << "Введите знаменатель:\n";
            cin >> znamenatel;
        } while (znamenatel == 0);
        cout << "\n\n";
    }
    void ShowObDrob()
    {
        cout <<"\tВ виде обычной дроби "<< chislitel<<"/"<< znamenatel<<endl;
        float x = round(((float)chislitel / znamenatel)*100000)/100000;
        cout << "\tВ виде десятичной дроби " << x << endl<<endl<<endl;
    }
};
 
int main()
{
    setlocale(LC_CTYPE, "RUS");
    const int n = 2; 
    ObDrob dr[n];
    for (int i = 0; i < n; i++) {
        cout <<"\t\tДробь "<<i+1<<":\n";
        dr[i].ShowObDrob();
    }
    
    _getch();
    return 0;
}
9398 вне форума Ответить с цитированием
Старый 23.10.2016, 23:06   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Ну, перегрузка оператора - это по сути создание функции.

Я обычно делаю через дружественную функцию. Это можно прописать внутри класса или же разделить на хедер и .cpp файлы.

Код:
friend ObDrob operator +(const ObDrob& left, const ObDrob& right){
   ObDrob  result;
   /// Прописываешь логику суммы.
   return std::move(result);
}
P.S. Вот в соседней теме выкладывал исходник своего класса с кучей перегруженных операторов.
http://www.programmersforum.ru/showthread.php?t=298701
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 23.10.2016 в 23:08.
New man вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать для объектов данного класса перегрузку операции SevenXP Общие вопросы C/C++ 11 23.05.2012 16:50
Пример пользовательского интерфейса для БД Иллидан БД в Delphi 1 07.11.2010 21:51
Хранение в векторе объектов пользовательского класса jennya Visual C++ 4 03.10.2010 19:16
Массив эллементов пользовательского класса windzor Общие вопросы .NET 4 02.03.2010 19:53
Использование конструкторов и деструктора при проектировании пользовательского класса НеважНо Общие вопросы C/C++ 1 22.01.2010 14:56