差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
wiki:reference:grammar:expression:main_page [2021/06/15 17:10] – jola | wiki:reference:grammar:expression:main_page [2021/06/16 10:57] (当前版本) – [3.6 Lambda 表达式] rend | ||
---|---|---|---|
行 7: | 行 7: | ||
**表达式**由操作数和运算符组成 | **表达式**由操作数和运算符组成 | ||
- | //操作数 运算符 操作数// | + | '' |
一般,含左右两个操作数的运算符是**二元运算符** | 一般,含左右两个操作数的运算符是**二元运算符** | ||
行 13: | 行 13: | ||
含一个操作数的运算符是**一元运算符** | 含一个操作数的运算符是**一元运算符** | ||
- | 二元运算符有结合律,左结合顺序为从右向左,右结合顺序为从左向右 | + | 二元运算符有**结合律**,有左右结合之分 |
- | 所有的运算符都有优先级,优先级越高越先计算 | + | 所有的运算符都有优先级,**优先级越高越先计算** |
< | < | ||
<div style=" | <div style=" | ||
- | **注意,对于递增、递减、赋值等会修改操作数的运算符,要求表达式的计算结果可被修改,不能是表达式计算中产生的中间临时量或常量** | + | 注意:对于递增、递减、赋值等会修改操作数的运算符,要求表达式的计算结果可被修改,不能是表达式计算中产生的中间临时量或常量 |
</ | </ | ||
</ | </ | ||
行 42: | 行 42: | ||
==== 3.2.1 new 表达式 ==== | ==== 3.2.1 new 表达式 ==== | ||
- | < | + | < |
new 表达式 | new 表达式 | ||
</ | </ | ||
行 50: | 行 50: | ||
表达式的计算结果需要是一种类型 | 表达式的计算结果需要是一种类型 | ||
- | 此对象将会遵从'' | + | 此对象将会遵从**RAII 原则**自动回收 |
==== 3.2.2 gcnew 表达式 ==== | ==== 3.2.2 gcnew 表达式 ==== | ||
- | < | + | < |
gcnew 表达式 | gcnew 表达式 | ||
</ | </ | ||
行 62: | 行 62: | ||
表达式的计算结果需要是一种类型 | 表达式的计算结果需要是一种类型 | ||
- | 此对象将会由垃圾回收器自动回收 | + | 此对象将会由**垃圾回收器**自动回收 |
===== 3.3 二元运算符 ===== | ===== 3.3 二元运算符 ===== | ||
行 84: | 行 84: | ||
| // | | // | ||
| // | | // | ||
- | | // | + | | // |
| // | | // | ||
==== 3.3.2 左结合运算符 ==== | ==== 3.3.2 左结合运算符 ==== | ||
行 96: | 行 96: | ||
| // | | // | ||
| // | | // | ||
- | === 3.3.2.1 绑定 === | + | === 3.3.2.1 绑定 === |
- | //待绑定对象// **:=** //表达式// | + | <code java> |
在这里,待绑定对象必须是**右值**,具体来说就是: | 在这里,待绑定对象必须是**右值**,具体来说就是: | ||
- | 1. 变量 | + | - 变量 |
- | + | | |
- | 2. 容器中的元素 | + | \\ |
== 变量的演变 == | == 变量的演变 == | ||
- | < | + | < |
# 绑定至变量 | # 绑定至变量 | ||
a := b | a := b | ||
行 114: | 行 114: | ||
c := arr[0] | c := arr[0] | ||
</ | </ | ||
+ | \\ | ||
== 引用的退化 == | == 引用的退化 == | ||
- | < | + | < |
- | # 绑定至自身的克隆 | + | a := clone(a) |
- | a := clone(a) | + | a := new array # 绑定至新内存区块 |
- | # 绑定至新内存区块 | + | |
- | a := new array | + | |
</ | </ | ||
+ | \\ | ||
+ | |||
==== 3.3.3 特殊运算符 ==== | ==== 3.3.3 特殊运算符 ==== | ||
行 190: | 行 191: | ||
\\ | \\ | ||
- | ===== 3.6 Lambda | + | ===== 3.6 lambda |
- | **定义一个Lambda | + | **定义一个lambda |
<code c++> | <code c++> | ||
行 200: | 行 201: | ||
参数列表中的参数只能指定名称,参数名不可重复,各参数之间以逗号分隔 | 参数列表中的参数只能指定名称,参数名不可重复,各参数之间以逗号分隔 | ||
- | '' | + | **lambda** |
- | 编译器会为 | + | 编译器会为 |
- | '' | + | **lambda** |