频道栏目
首页 > 资讯 > C++ > 正文

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

17-10-13        来源:[db:作者]  
收藏   我要投稿

1、重载运算符

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

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

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

2、左值和右值

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

右值:对象的值(内容)

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

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

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

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

3、优先级和结合律

运算符优先级表:

优先级 描述 符号 结合律
1 ::
2 成员选择 . ->
2 下标 []
2 函数调用与类型构造 ()
3 后置运算 lvalue++,lvalue–
3 类型ID typeid(type)
3 类型转换 cast_name< type >(expr)
4 前置运算 ++lvalue,–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 逗号

相关TAG标签
上一篇:oracle存储过程中,is和as有什么区别?
下一篇:升级openwrt中的ffmpeg版本遇到的问题及解决办法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站