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

Перегрузка операторов - C++

Восстановить пароль Регистрация
 
watovl
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 15
09.11.2016, 11:53     Перегрузка операторов #1
Расскажите можно ли как-то сделать перегрузку операторов не в классе, а в своём пространстве имён?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2016, 11:53     Перегрузка операторов
Посмотрите здесь:

Перегрузка операторов C++
[c++] Перегрузка операторов C++
C++ Перегрузка операторов
C++ Перегрузка операторов(=,+)
C++ Перегрузка операторов
C++ Перегрузка операторов
C++ Перегрузка операторов
C++ Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Atakai
 Аватар для Atakai
53 / 9 / 5
Регистрация: 23.10.2015
Сообщений: 32
09.11.2016, 12:23     Перегрузка операторов #2
Перегрузку операторов класса вы делаете для экземпляра (объекта) этого класса. У пространств имен не может быть экземпляров.

Если Вы имели ввиду делать перегрузку не в объявлении, а определении класса, тогда можно:
C++
1
2
3
4
5
6
7
8
class Sample {
  Sample operator+(Sample arg, Sample arg2);
};
 
Sample Sample::operator+(Sample arg, Sample arg2)
{
  //...
}
Но все равно перегрузку сначала нужно будет объявить.

Еще можно использовать функции-друзья.
C++
1
2
3
4
5
6
7
class Sample {
  friend Sample operator+(Sample arg, Sample arg2);
};
 
Sample operator+(Sample arg, Sample arg2) {
  // ...
}
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2909 / 1445 / 397
Регистрация: 18.10.2014
Сообщений: 2,663
10.11.2016, 03:15     Перегрузка операторов #3
Цитата Сообщение от watovl Посмотреть сообщение
можно ли как-то сделать перегрузку операторов не в классе, а в своём пространстве имён?
Можно

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct S {};
 
namespace N {
    void operator +(const S &, const S &) {}
}
 
int main ()
{
  using namespace N;
  S s;
  s + s;
}
Yandex
Объявления
10.11.2016, 03:15     Перегрузка операторов
Ответ Создать тему
Опции темы

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