Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Как правильно перегружать унарный минус? - C++

26.12.2012, 10:37. Просмотров 701. Ответов 6
Метки нет (Все метки)

Дайте правильный прототип перегрузки унарного минуса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2012, 10:37     Как правильно перегружать унарный минус?
Посмотрите здесь:

Как сделать, чтобы калькулятор реагировал на унарный минус C++
Оператор (-) Унарный минус. классы. C++
C++ Как вызвать в главной программе оператор унарный минус
C++ как правильно перегружать оператор?
C++ Как правильно перегружать потоковый оператор вывода в файл?
C++ Унарный минус на С#
Как перегружать оператор -> ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
26.12.2012, 12:03     Как правильно перегружать унарный минус? #2
Просто перегрузка минуса? Между объектами одного класса или разных?
pa3gBa
2 / 2 / 0
Регистрация: 27.04.2012
Сообщений: 20
26.12.2012, 12:22     Как правильно перегружать унарный минус? #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Min
{
private:
    int minus;
public:
    Min(): minus (0) {}
    Min(int m): minus (m) {}
 
    void GetM()
    { cout<< "Enter the number of: "; cin>> minus; }
    
    void ShowM()
    { cout<< "answer= "<< minus; }
    
    Min operator- (Min m2)
    {
        int a= minus- m2.minus;
        return Min(a);
    }
};
 
int main()
{
    Min m1,m2,m3;
    m1.GetM();
    m2.GetM();
 
    m3= m1- m2;
 
    m3.ShowM();
 
 char q;
 cin>>q;
 return 0;
}
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.12.2012, 12:33  [ТС]     Как правильно перегружать унарный минус? #4
Цитата Сообщение от BumerangSP Посмотреть сообщение
Просто перегрузка минуса? Между объектами одного класса или разных?
Унарный минус.
C++
1
2
3
4
5
6
7
double abs(double x)
{
 if (x<0.0)
 {
  return -x;
 }
 return x;
. Такой же минус, только для класса. А между двумя - это бинарный.

Добавлено через 51 секунду
pa3gBa, это что?
Пaтрик
395 / 388 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
26.12.2012, 12:35     Как правильно перегружать унарный минус? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
class Integer
{
    int value;
public:
    Integer(): value(0)
    {
    }
 
    Integer(int val): value(val)
    {
    }
 
    Integer operator- ();
 
    friend std::ostream& operator << (std::ostream& out, const Integer& integer);
};
 
Integer Integer::operator-()
{
    return Integer(-this->value);
}
 
std::ostream& operator << (std::ostream& out, const Integer& integer)
{
    out << integer.value;
    return out;
}
 
int main()
{
    Integer integer(32);
    std::cout << -integer << std::endl;
}
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
26.12.2012, 12:43     Как правильно перегружать унарный минус? #6
Оно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
template <class T>
class one
{
        T i;
        public:
      one(T);
        one operator -();
        void show();
};
template<class T>
one<T>::one(T i) 
{
      this->i=i;
}
template <class T>
one<T> one<T>::operator -()
{
         this->i *=-1; 
       return *this;
}
template <class T>
void one<T>::show()
{
      std::cout<<this->i;
}
 
class two
{
        int j;
        two(int);
};
 
int main()
{
     one<int> obj1 = 23;
     obj1 = -obj1;
     obj1.show();
     return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2012, 12:50     Как правильно перегружать унарный минус?
Еще ссылки по теме:

C++ Как же все-таки лучше всего перегружать операторы?
C++ Определить унарный оператор ++ как дружественную функцию
Объясните значение операций: дополнение ~lvalue, унарный плюс и минус, операция создания с размещением C++
Не правильно работает алгоритм вычитания строк при перегрузке оператора "-"(минус) C++
C++ Как правильно перегружать операторы?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.12.2012, 12:50  [ТС]     Как правильно перегружать унарный минус? #7
Ответ уже дан постом выше.

Добавлено через 1 минуту
И вообще во-первых
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//-------------------------------------------------------------------------------------------------
Longs       ::
TInteger
Longs       ::
TInteger    ::  operator -       (                          )
{
 uint8_t  *Source;
 uint8_t  *Target;
 uint16_t  Buffer;
 uint16_t  Carry;
 TInteger  Result;
 for (Source=Data+0xFF, Target=Result.Data+0xFF; Source>=Data; --Source, --Target)
 {
  *Target=~(*Source);
 }
 for (Carry=0x0001, Target=Result.Data+0xFF; Target>=Result.Data; --Target)
 {
   Buffer=((uint16_t)*Target)+Carry;
  *Target= (uint8_t )(Buffer&0x00FF);
  Carry=(Buffer&0xFF00)>>8;
 }
 return Result;
}
//-------------------------------------------------------------------------------------------------
, а во-вторых я просил только прототип.
Yandex
Объявления
26.12.2012, 12:50     Как правильно перегружать унарный минус?
Ответ Создать тему
Опции темы

Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru