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

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