首页 > 程序开发 > 软件开发 > C++ >

C++重载运算符、左值和右值、优先级和结合律

2017-10-13

C++重载运算符、左值和右值、优先级和结合律。

1、重载运算符

我们使用重载运算符的时候,

运算对象的类型和返回值都是可以由该运算符定义的

但运算对象的个数、运算符的优先级和结合律是无法改变的

2、左值和右值

左值:对象的身份,在内存中的位置

右值:对象的值(内容)

赋值运算符(=):需要左值作为左侧运算对象,得到的结果仍然是一个左值

取地址符(&):作用于一个左值运算对象,但返回的是一个指向该运算对象的指针,该指针是一个右值

内置解引用()、下标([])、迭代器解引用( )的求值结果都是左值

内置类型和迭代器的递增递减(++、–)作用于左值运算对象,其前置版本(++p)所得结果是左值

3、优先级和结合律

运算符优先级表:

优先级 描述 符号 结合律
1 ::
2 成员选择 . ->
2 下标 []
2 函数调用与类型构造 ()
3 后置运算 lvalue++,lvalue–
3 类型ID typeid(type)
3 类型转换 cast_name< type >(expr)
4 前置运算 ++lvalue,&ndash;lvalue
4 求反,逻辑 ~expr,!expr
4 正负性 +expr,-expr
4 解引用取地址 *、&
4 类型转换(旧)) ()sizeof
5 指向成员选择的指针 ptr->*ptr_to_member,obj.&ptr_tomember
6 算术:乘除取余 */%
7 算术:加减 +-
8 :向左向右 << , >>
9 关系:大于小于 <、<=、>、>=
10 关系:等不等于 ==、!=
11 :位与 &
12 :异或 ^
13 :位或 |
14 逻辑:逻辑与 &&
15 逻辑:逻辑或 ||
16 三元符 ?=
17 赋值 =
18 复合赋值 *=,/=,%=,+=,-=,<<=,>>=,&=,|=,^=
19 逗号

相关文章
最新文章
热点推荐