Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
#1

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

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

Дайте правильный прототип перегрузки унарного минуса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2012, 10:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как правильно перегружать унарный минус? (C++):

Как сделать, чтобы калькулятор реагировал на унарный минус
подскажите, как сделать, чтобы этот калькулятор реагировал на унарный минус?...

Как вызвать в главной программе оператор унарный минус
Paint operator-(const Paint& p) { return Paint(-p.x,-p.y); }

Унарный минус на С#
Всем доброго времени суток,помогите пожалуйста с задачкой. (i-мнимая единица)...

Оператор (-) Унарный минус. классы.
Доброе время суток . помогите . составить operator- (унарный минус) ( что...

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

Как правильно перегружать оператор?
Есть такой класс. class LampaO { private: int svet; int job; int pro;...

6
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
26.12.2012, 12:03 #2
Просто перегрузка минуса? Между объектами одного класса или разных?
0
pa3gBa
2 / 2 / 4
Регистрация: 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;
}
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
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, это что?
0
Пaтрик
417 / 392 / 132
Регистрация: 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;
}
1
BumerangSP
4287 / 1409 / 463
Регистрация: 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;
}
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
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;
}
//-------------------------------------------------------------------------------------------------
, а во-вторых я просил только прототип.
0
26.12.2012, 12:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2012, 12:50
Привет! Вот еще темы с решениями:

Как правильно перегружать операторы?
Добрый день. Более-менее освоил Си, и вроде бы неплохо в нем разбираюсь. Решил...

Объясните значение операций: дополнение ~lvalue, унарный плюс и минус, операция создания с размещением
Что такое дополнение ~lvalue, унарный плюс и минус и операция создания с...

Как правильно перегружать потоковый оператор вывода в файл?
Нужен только прототип оператора, реализацию сделаю сам. Обязательное...

Как перегружать оператор -> ?
Доброго времени суток. Есть класс: template&lt;class T&gt; class Auto_ptr {...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru