Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

1.2. Выражения 19

Заботьтесь, выполняя назначения между совокупными объектами (множества,

последовательности и структуры). Как правило, программист предназначает такое назначение, чтобы скопировать содержание одного объекта к другому. Это работает на последовательности STL и структуры стиля C-(если у них есть тот же самый тип). Однако, как обсуждено ранее, последовательности C-стиля и множества не могут быть скопированы просто через единственный оператор присваивания.

Другие операторы

Вот некоторые другие полезные операторы.

название класса:: участник резолюция объема класса namespace имя:: участник резолюция namespace

bool exp? истинный exp: ложное exp условное выражение

Мы видели namespace оператора резолюции в Разделе 1.1.4. condi-tional выражение тогда еще является вариантом «если» для выражений. Если bool exp оценивает к истинному, ценность истинного exp возвращена, и иначе ценность ложного exp пере -

превращенный.

Следующий пример показывает, как использовать это, чтобы возвратить минимум двух чисел, x и y.

меньший = (x <y? x: y); //меньший = минута (x, y)

Мы также переносим следующие операции на потоках ввода/вывода.

поток>> поток вара ввел поток <<exp продукция потока

Хотя они похожи, что bitwise перемещают операторов, вход (>>) и производят (<<), операторы потока очень отличаются. Они - примеры C ++ сильный CA - pability, названный оператором, перегружающим, которые обсуждены в Разделе 1.4.2. Эти операторы не внутренняя часть C ++, но предоставлены включением файла <iostream>. Мы отсылаем читателя к ссылкам, данным в примечаниях к главе для получения дополнительной информации о входе и выходе в C ++.

Вышеупомянутое обсуждение предоставляет несколько неполный список всего C ++ oper-ators, но это, тем не менее, покрывает наиболее распространенные. Позже мы представляем других, включая кастинг операторов.

Предшествование оператора

Операторам в C ++ назначают предшествование, которое определяет заказ в который

операции выполнены в отсутствие круглых скобок. В Таблице 1.1 мы показываем предшествование некоторых более общих C ++ операторы с самым высоким, перечисленным сначала. Если круглые скобки не используются, операторы оценены в заказе от самого высокого

20

Глава 1. C ++ Учебник для начинающих к самому низкому. Например, выражение 0 <4 + x * 3 было бы оценено, как будто оно было введено как 0 <(4 + (x * 3)). Если p - множество указателей, то *p[2] эквивалентен * (p[2]). За исключением && и, которые гарантируют слева направо evalua-

tion, заказ оценки подвыражений зависит от внедрения.

Так как эти правила сложны, это - хорошая идея добавить круглые скобки к сложным выражениям, чтобы ясно дать понять Ваше намерение кому-то читающему Вашу программу.

Предшествование оператора

Напечатайте Операторы

резолюция объема имя namespace:: участник

selection/subscripting класс name.member указатель-> членское множество [exp]

вызов функции функция (args)

постфиксируйте операторов вар ++ вар-

операторы префикса ++ вар- вар +exp-exp ˜exp! exp

dereference/address *указатель &var

умножение/подразделение * / %

дополнение/вычитание + -

изменение <<>>

сравнение <<=>> = равенство ==! = bitwise и &bitwise исключительный - или ^

bitwise или 

логичный и &&

логичный или 

условный bool exp? истинный exp: ложный exp

назначение = + =- = * = / = % =>> = <<= &= ^ ==

Таблица 1.1: C ++ правила предшествования. Примечание «exp» обозначает любое выражение.

1.2.1 Изменение типов через кастинг

Бросок - операция, которая позволяет нам изменять тип переменной. В сущности мы можем взять переменную одного типа и бросить его в эквивалентную переменную другого типа. Кастинг полезен во многих ситуациях. Есть два фундаментальных типа кастинга, который может быть сделан в C ++. Мы можем или бросить относительно фундаментальных типов, или мы можем бросить относительно объектов класса и указателей. Мы обсуждаем кастинг с фундаментальными типами здесь, и мы рассматриваем кастинг с объектами в Разделе 2.2.4. Мы начинаем, вводя традиционный способ бросить в C ++, и позже мы представляем C ++ более новые операторы кастинга.