operators
Материал из cppreference.com
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
Содержание |
[править] Перегрузка операторов
[править] Синтаксис
type operator op ( params ) ;
|
|||||||||
[править] Объяснение
- <type> является / являются тип (ы) переменных.Оригинал:<type> is/are the type(s) of the variables.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - <op> является частным оператором (например,
+
,+=
,<<
,>>
,&&
,||
,%
и т.д.).Оригинал:<op> is the particular operator (e.g.+
,+=
,<<
,>>
,&&
,||
,%
, etc.).Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - <params> является / являются имя (имена) необходимых параметров (зависит от оператора).Оригинал:<params> is/are the name(s) of the required parameters (depends on the operator).Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Ограничения
- Вы не можете создавать новые операторы, такие как
**
или&|
.Оригинал:You cannot create new operators such as**
or&|
.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Не все операторы могут быть перегруженыОригинал:Not all operators can be overloadedТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Некоторые операторы могут быть перегруженными, как не статические члены классаОригинал:Some operators can only be overloaded as non-static class membersТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. - Короткое замыкание оценки не работают с перегруженных операторовОригинал:Short-circuit evaluation doesn't work with overloaded operatorsТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Оператор вызовы
Перегруженные операторы могут быть вызваны с помощью обычной инфиксной
Оригинал:
Overloaded operators can be called using the usual infix notation
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
a+b
или функции, как обозначение
Оригинал:
or a function-like notation
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
operator+(a,b)
[править] Пример
Запустить этот код
#include <iostream> using namespace std; class Fraction{ private: int numerator, denominator; public: Fraction(int n, int d): numerator(n), denominator(d) {} // Note that the keyword operator combined with an actual // operator is used as the function name friend ostream& operator<<(ostream&, Fraction&); }; ostream& operator<<(ostream& out, Fraction& f){ out << f.numerator << '/' << f.denominator; return out; } int main(){ Fraction f1(3, 8); Fraction f2(1, 2); cout << f1 << endl; cout << 3 << ' ' << f2 << endl; return 0; }
Вывод:
3/8 3 1/2
[править] См. также
Common operators | ||||||
---|---|---|---|---|---|---|
назначение | incrementNJdecrement | арифметики | логичной | сравнение | memberNJaccess | другие |
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
Special operators | ||||||
static_cast преобразует один тип на другой совместимый
типа Оригинал: static_cast converts one type to another compatible type Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. dynamic_cast преобразует виртуальный базовый класс для производных class
Оригинал: dynamic_cast converts virtual base class to derived class Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. const_cast преобразует тип совместимого типа с различными cv qualifiers
Оригинал: Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. reinterpret_cast преобразует тип несовместимы type
Оригинал: reinterpret_cast converts type to incompatible type Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. new выделяет memory
Оригинал: new allocates memory Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. delete освобождает memory
Оригинал: delete deallocates memory Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. sizeof запрашивает размер type
Оригинал: sizeof queries the size of a type Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. sizeof... запрашивает размер Параметр пакета (начиная с C++11)
Оригинал: Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. typeid запрашивает сведения о типе type
Оригинал: typeid queries the type information of a type Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. noexcept проверяет выражение может вызвать исключение (начиная с C++11)
Оригинал: Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. alignof запросов выравнивание требований типа (начиная с C++11)
Оригинал: alignof queries alignment requirements of a type (начиная с C++11) Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |