Войти

Показать полную графическую версию : [решено] Теоретический вопрос в задаче о классе целых чисел


Sky-er
07-01-2009, 02:32
Помогите разобраться:
Создать класс целых чисел (int). Определить оператор + (бинарная операция) как метод и -- (унарная операция) как дружественную функцию. Продемонстрировать работу класса.

Я понимаю это должно выглядеть вот так, но немного непонимаю

#include "stdafx.h"
#include <iostream>
using namespace std;

class Int
{
private:
int number;
public:
Int () : number (0)
{}
Int (int n) number(n)
{}

Int operator +(Int &n)
{
number = number + n.number;

return number;
};

friend Int opearator --(Int &n)
{
--n.number;

return n;
}
void print()
{
cout << number << "\n";
}
};

int main()
{
Int n1, n2(4), n3(2);
n1 = n2 + n3;
n1.print()

--n1;
n1.print()

return 0;
}

pva
07-01-2009, 12:30
В чём вопрос? код вам предоставили абсолютно правильный. Хотя ИМХО с точки зрения логики операции + и --, вам дали невтемное задание, + лучше сделать дружественным, а -- методом. Кстати, интересно, как теперь, следуя заданию, будет работать operator--(int) /*постфиксный декремент*/ ?
Разве что здесь бы поправил:

Int operator +(const Int &n) const
{
return Int(number + n.number);
};

Sky-er
07-01-2009, 14:08
Что правильно это я заню, я по учебнику делал, вот проблема, в том, что она не работает немогу понять почему?

pva
08-01-2009, 01:16
исправил ошибки в коде:

#include <iostream>
using namespace std;

class Int
{
private:
int number;
public:
Int () : number (0) {}
Int (int n) : number(n) {}

Int operator +(Int &n)
{
number = number + n.number;
return number;
};

friend Int operator --(Int &n)
{
--n.number;
return n;
}

void print()
{
cout << number << "\n";
}
};

int main()
{
Int n1, n2(4), n3(2);
n1 = n2 + n3;
n1.print();

--n1;
n1.print();

return 0;
}

я бы викинул этот учебник, и не из-за ошибок, а из-за в принципе неправильного образа мысли автора. ИМХО конечно. Ему бы страуструпа почитать...

Sky-er
08-01-2009, 04:18
Нет вы не правильно поняли, само задание составлял препод именно так как написанно, а сам код пробовал реализовать я, просто имел ввиду, то что идет после класса я писал по книге "Павловской"




© OSzone.net 2001-2012