C++操作符总结

箭头操作符
点操作符用于获取类类型对象的成员:
Sales_item item1;
item1.same_isbn(item2);
若是有一个指向item1对象的指针:
Sales_item *sp=&item1;
则必须要先解引用,才能使用点操作符:
(*sp).same_isbn(item2);
并且括号是不能省略的,因为解引用的优先级要大于点操作。
由于编程很容易忘记括号,而这类代码要经常使用,所以C++为在点操作符后使用的解引用操作定义了一个同义词:箭头操作符(->):
sp->same_isbn(item2);//等价于(*sp).same_isbn(item2);
sizeof
语法形式:
sizeof(type name);
sizeof(expr);
sizeof expr;
将sizeof用于expr时,并没有计算表达式的值,故sizeof *p中,p可指向无效地址,因为p不需被解析。
对char 类型或值为char类型的表达式做sizeof操作,得1
对引用类型做sizeof操作将返回存放引用类型的所需空间大小
对指针做sizeof操作将返回存放指针所需内存大小,如果要获取该指针所指向的对象大小,则必须解引用。
对数组做sizeof操作等效于将对其元素类型做sizeof操作的结果乘上元素个数。因为sizeof返回整个数组在内存中的存储长度,所以用sizeof数组的结果除以sizeof其元素类型为数组元素个数。int sz=sizeof(ia)/sizeof(*ia);

 

操作符优先级及结合顺序
操作符 结合顺序 功能 用法
::
::
::
全局作用域
类作用域
名字空间作用域
::name
class::name
namespace::name
.
->
[]
()
()

成员选择
成员选择
下标
函数调用
类型构造
object.member
pointer->member
variable[expr]
name(expr)
type(expr_list)
++
--
typeid
typeid
显示类型转换

后自增
后自减
类型ID
运行时类型ID
类型转换
lvalue++
lvalue--
typeid(type)
typeid(expr)
cast_name<type>(expr)

 

sizeof
sizeof
++
--
~
!
-
+
*
&
()
new
delete
delete []



对象大小
类型大小
前自增
前自减
位求反
逻辑非
一元负号
一元正号
解引用
取地址
类型转换
创建对象
释放对象
释放数组

sizeof expr
sizeof(type)
++lvalue
--lvalue
~expr
!expr
-expr
+expr
&expr
(type)expr
new type
delete expr
delete [] expr
->*
.*

指向成员操作的指针
指向成员操作的指针
ptr->*ptr_to_member
obj.*ptr_to_member
*
/
%


求模
expr*expr
expr/expr
expr%expr
+
_



expr+expr
expr-expr
<<
>>

位左移
位右移
expr<<expr
expr>>expr
<
<=
>
>=

小于
小于等于
大于
大于等于
expr<expr
expr<=expr
expr>expr
expr>=expr
==
!=

相等
不相等
expr==expr
expr!=expr
& 位与 expr&expr
^ 位异或
expr^expr
位或 expr|expr
&&
逻辑与
expr&&expr
||
逻辑或
expr||expr
?:
条作操作
expr?expr:expr
=
*=,/=,%=,+=,-=,<<=,
>>=,&=,|=,^=

赋值操作
复合赋值操作
lvalue=expr
lvalue+=expr 等等
throw
抛出异常 throw expr
, 逗号 expr,expr

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章