Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобратся с перегрузкой, Перегрузка + 
:(
    Опции темы
Towards
Дата 2.12.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 2.12.2007

Репутация: нет
Всего: нет



Попробывал перегрузить операцию "+", она должна складывать массивы по элементно и выводить полученный массив.Вывод полученного массива не получается - вылезают какие-то странные числа. Помогите плиз. 
Код

#include <iostream.h>
using std::cout;
using std::cin;
class input_mass {
    int q[10];
    int k,i,sum[10];
public:
    void put_mass (int i);
    int get_mass ();
    input_mass operator+(input_mass op2)const;
    void show();
};
input_mass input_mass::operator +(input_mass op2)const
{
    input_mass temp;
    for(int k=0;k<10;k++)
        temp.sum[k] = q[k]+op2.q[k];
    return temp;
}
void input_mass::show()
{
    for(k=0;k<10;k++)
        cout << sum[k]<< "\n";
}

void input_mass ::put_mass(int i)
{
    k=0;
    if (k==100){
        cout << "dsadd";
        return;
    }
    
q[k]=i;
k++;
}
int  input_mass ::get_mass()
{
    k=0;
    return q[k++];
}
int main ()
{
    input_mass a,b,c;
    cout << "array 1 \n";
    for(int i=0;i<10;i++){
    a.put_mass(i);
    cout << a.get_mass()<< "\n";
    }
    cout << "array 2\n";
    for (int i=0;i<10;i++) {
        b.put_mass(i);
        cout << b.get_mass()<< "\n";
    }
    c = a + b;
    cout << "summa massivov: \n";
    c.show();
    return 0;
}


Заранее благодарю!

PM MAIL   Вверх
DjoNIK
Дата 3.12.2007, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Код

input_mass input_mass::operator +(input_mass op2)const{
    input_mass temp;
    for(int k=0;k<10;k++)
        temp.sum[k] = q[k]+op2.q[k];
    return temp;
}

По-поводу реализации куча вопросов...
1) При реализации класса обычно передают ссылку
 1.1) Если переданные объекты не должны изменятся, то их делают константными
2) Перегруженые бинарные операции обычно реализуют через дружественные функции
3) Создание временной переменной и возвращение через нее значение может оказаться затратным делом (следствие не выполнния первого пункта)
4) Суммируемые input_mass-ы не обязательно будут иметь размерность k
5) Ну и так далее....


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
Daevaorn
Дата 3.12.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



У тебя что-то странное с полем класса k. Он у тебя везде обнуляется, поэтому в результате на выходе первое значение 18( т.е. 9+9 , последнее что попало в q[0]), а все остальные как придется, т.к. q[1] больше не заполняются.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.