Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Теоретический вопрос в задаче о классе целых чисел (http://forum.oszone.net/showthread.php?t=127935)

Sky-er 07-01-2009 02:32 999398

Теоретический вопрос в задаче о классе целых чисел
 
Помогите разобраться:
Создать класс целых чисел (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 999529

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

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


Sky-er 07-01-2009 14:08 999583

Что правильно это я заню, я по учебнику делал, вот проблема, в том, что она не работает немогу понять почему?

pva 08-01-2009 01:16 1000149

исправил ошибки в коде:
Код:

#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 1000224

Нет вы не правильно поняли, само задание составлял препод именно так как написанно, а сам код пробовал реализовать я, просто имел ввиду, то что идет после класса я писал по книге "Павловской"


Время: 21:52.

Время: 21:52.
© OSzone.net 2001-