Поделиться через


Постфиксные выражения

Постфиксные выражения состоят из основных выражений или выражений, в которых постфиксные операторы следуют за основным выражением. Постфиксные операторы перечислены в следующей таблице.

Постфиксные операторы

Имя оператора

Нотация оператора

Оператор индекса

[ ]

Оператор вызова функции

( )

Оператор явного преобразования типа

имя-типа( )

Оператор доступа к элементу

. или –>

Постфиксный оператор приращения

++

Постфиксный оператор уменьшения

––

Следующий синтаксис описывает возможные постфиксные выражения:

primary-expression 
postfix-expression [ expression ] 
postfix-expression ( expression-list<SUB>opt</SUB> ) 
simple-type-name ( expression-list<SUB>opt</SUB> ) 
postfix-expression . name 
postfix-expression –> name 
postfix-expression ++ 
postfix-expression –– 
cast-keyword < typename > (expression ) 
typeid ( typename )

постфиксное-выражение выше может быть основным выражением или другим постфиксным выражением. См. основные выражения. Постфиксные выражения группируются слева направо, делая возможным следующее связывание выражений.

func(1)->GetValue()++

В предыдущем выражении func — это основное выражение, func(1) — постфиксное выражение функции, func(1)->GetData — постфиксное выражение, задающее член класса, func (1)->GetData() — это другое постфиксное выражение функции, и все выражение представляет собой постфиксное выражение, инкрементно увеличивающее возвращаемое значение GetData. Значение выражения в целом имеет следующий смысл: "вызовите функцию, передающую 1 в качестве аргумента, и получите указатель на класс в качестве возвращаемого значения. Затем вызовите GetValue() для этого класса и выполните инкрементное увеличение возвращаемого значения.

Перечисленные выше выражения — это выражения присваивания, что означает, что результат этих выражений должен представлять собой r-значение.

Форма постфиксного выражения

simple-type-name ( expression-list )

показывает вызов конструктора. Если simple-type-name — это фундаментальный тип, список выражений должен представлять собой отдельное выражение, и это выражение обозначает приведение значения выражения к фундаментальному типу. Данный тип выражения приведения копирует конструктор. Поскольку эта форма позволяет создавать фундаментальные типы и классы с использованием одного и того же синтаксиса, эта форма особенно полезна при определении шаблонных классов.

Ключевое-слово-приведения — это одно из ключевых слов dynamic_cast, static_cast или reinterpret_cast. Дополнительные сведения можно найти в разделах dynamic_cast, static_cast и reinterpet_cast.

Оператор typeid считается постфиксным выражением. См. раздел Оператор typeid.

См. также

Ссылки

Типы выражений