Операторы в C++

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Операторы в C++ — конструкции языка.

Операторы для работы с памятью

КодОписаниеПример использованияПояснениеДополнение
&x амперсанд — получает адрес памяти переменной x int a = &x;
в переменную a получаем адрес памяти перемененной x
взять адрес &x
взятие адреса x
*x разыменование — получение значения указателя x, звездочка — ссылка на адрес в памяти int *y = &x;
в переменную указателя y кладем адрес памяти переменной x
взять значение говорить что это указатель (ставить звездочку) надо только в случае первой инициализации переменной
Основные моменты работы с ссылками и указателями
  • Когда работаем с адресом указателя — используем просто имя переменной (туда можно заносить только адрес, который берется у переменной знаком амперсанда (&), когда же работаем со значением адреса указателя — используем звездочку перед именем переменной указателя.
  • При работе с указателями: Когда мы оперируем данными (значениями), то используем знак звездочка (*), если же оперируем адресами то используем просто имя переменной указателя.
  • Когда мы оперируем адресами, то используем знак амперсанда (&).

Операторы работы с объектами

ОператорОписание
.через точку происходит обращение к полям класса через переменную этого класса (объекта класса)
->так происходит доступ к объектам класса через указатель на объект класса

Операторы работы с указателями и членами класса

Оператор Синтаксис Перегружаемый Реализован в Си Пример (R, S и T обозначают тип)
Член типа T Определение вне класса
Обращение к элементу массива a[b] Да Да R T::operator [](S b); n/a
Непрямое обращение («объект на который указывает a») *a Да Да R T::operator *(); R operator *(T a);
Ссылка («адрес a») &a Да Да R T::operator &(); R operator &(T a);
Обращение к члену структуры/класса («член b объекта, на который указывает a») (*a).b Да Да n/a
Обращение к члену структуры/класса («член b объекта, на который указывает a») a->b Да Да R T::operator ->(); n/a
Обращение к члену структуры («член b объекта a») a.b Нет Да n/a
Член, на который указывает b, в объекте на который указывает a a->*b Да Нет R T::operator ->*(S b); R operator ->*(T a, S b);
Член, на который указывает b, в объекте a a.*b Нет Нет n/a
Отрицание
~ (тильда) — побитовое отрицание, ! — логическое отрицание.
Исключающее или
^ (xor) — побитовое исключающее или, логического xor не предусмотрено.
Пустые стейтменты
  1. ; — пустой стейтмент, состоящий только из пунктуатора
  2. {} — пустой составной оператор

Остальные операторы

ОператорыОписание
+ - * / = % сложение, вычитание, умножение, деление, присвоение, получение остатка от деления
. -> получение доступа к элементам класса через статический и динамический объект класса
< > <= >= меньше, больше, меньше или равно, больше или равно
+= -= *= /= %= Прибавление, отнимание, домножение, деление, деление по модулю имеющегося числа и занесение результата обратно в переменную. Взять текущее значение (число) и: прибавить, вычесть, умножить, разделить, разделить по модулю его на другое число и занести в первое.
+ - * / % Арифметические операторы: сложение, вычитание, умножение, деление, присвоение, получение остатка от деления
+a -a Операторы знака
++a a++ --a a-- Префиксный и постфиксный инкремент и декремент
&& || ! Логические операторы
& | ~ ^Побитовое операторы
&= |= ^=
<< >> <<= >>= Битовый сдвиг
= Оператор присваивания
== != Операторы сравнения
< > >= <=
&a *a a-> a->*
() []
(type)
.
,
a ? b : cтернарный оператор
{}составной оператор, инициализатор