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

операторы hand made - C++

Восстановить пароль Регистрация
 
cyberobot
 Аватар для cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
02.01.2012, 13:46     операторы hand made #1
Можно ли создавать свои операторы для встроенных типов. Например сделать оператор который работал бы как функция abs.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.01.2012, 14:07     операторы hand made #2
Нет. Можно перегрузить для класса, но это не кошерно(имеется в виду такие функции, как abs, что и предоставлено в данном коде на примере пергрузки унарного минуса).
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
#include <iostream>
 
template <class T> class Foo
{
    T a;
    
public:
    Foo(T num): a(num)
    {
        
    }
    
    Foo& operator - ()
    {
        if(a < 0)
            a = -a;
        return *this;
    }
    
    friend std::ostream& operator << (std::ostream& stream, Foo f)
    {
        stream << f.a;
        return stream;
    }
};
    
int main()
{
    Foo<float> f(-5.4);
    Foo<int> f1(2);
    std::cout << f << ' ' << f1 << std::endl;
    std::cout << -f << ' ' << -f1 << std::endl;
    return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
02.01.2012, 15:47     операторы hand made #3
Цитата Сообщение от cyberobot Посмотреть сообщение
Например сделать оператор который работал бы как функция abs.
Какой оператор? Можно любой перегрузить
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
02.01.2012, 16:35     операторы hand made #4
Цитата Сообщение от go Посмотреть сообщение
Какой оператор? Можно любой перегрузить
так не любой же оператор можно перегрузить,вроде
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
02.01.2012, 16:39     операторы hand made #5
vetal10, всё верно
Код
.    .*   ::   ?:   sizeof
нельзя перегружать.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
02.01.2012, 19:50     операторы hand made #6
Цитата Сообщение от vetal10 Посмотреть сообщение
так не любой же оператор можно перегрузить,вроде
За чем так буквально воспринимать. Имелось ввиду, что по логике ни один из операторов не подходит для это.
В варианте soon,
Код
-
должен менять знак на противоположно (по логике), а не находить абсолютное значение
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
02.01.2012, 19:53     операторы hand made #7
на случае если ТС подумает что любой действительно можно перегружать
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.01.2012, 19:59     операторы hand made #8
ТС вообще спрашивал "для встроенных типов".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2012, 20:07     операторы hand made
Еще ссылки по теме:

Операторы ветвления и операторы передачи управления C++
C++ Операторы цикла и операторы передачи управления
Операторы языка С++: операторы цикла (исправьте программу) C++

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

Или воспользуйтесь поиском по форуму:
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
02.01.2012, 20:07     операторы hand made #9
my bad
Yandex
Объявления
02.01.2012, 20:07     операторы hand made
Ответ Создать тему
Опции темы

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