You are on page 1of 14

http://translate.google.com.vn/translate?hl=vi&langpair=en|vi&u=http://en.wikipedia.

org/wiki/Operat ors_in_C_and_C%252B%252B

y l mt danh sch cc nh khai thc trong C v C + + ngn ng lp trnh . Tt c cc nh khai thc c lit k tn ti trong C + +, ct th t "bao gm C", a ra cho d mt nh iu hnh cng c mt trong C. Lu rng C khng h tr iu hnh qu ti. Khi khng b qu ti, cc nh khai thc & &, | |, v, ( du phy ), c mt im trnh t sau khi nh gi ca cc ton hng u tin. C + + cng c cha cc nh khai thc chuyn i loi hnh const_cast, static_cast, dynamic_cast, v reinterpret_cast khng c lit k trong bng cho ngn gn. Cc nh dng ca cc nh khai thc c ngha l mc u tin ca h l khng quan trng. Hu ht cc nh khai thc c sn trong C v C + + cng c sn trong cc ngn ng khc nh C # , Java , Perl v PHP vi c quyn u tin, associativity, v ng ngha.
Ni dung
[hide]

Bng 1

o o o o o o o

1,1 s hc cc nh khai thc 1.2 So snh cc nh khai thc / cc nh khai thc quan h 1.3 logic cc nh khai thc 1,4 bit cc nh khai thc 1,5 Hp cht chuyn nhng nh khai thc 1,6 thnh vin v con tr cc nh khai thc 1,7 Cc nh khai thc

2 iu hnh u tin

o o

2,1 Ghi ch 2,2 t ng ngha C + + nh iu hnh

3 Ti liu tham kho 4 Lin kt ngoi

[ sa ]Bng

i vi cc mc ch ca bng ny, a , b , v c i din gi tr hp l (literals, cc gi tr t cc bin, hoc gi tr tr v), cc tn i tng, hoc lvalues, khi thch hp. Overloadable c ngha l cc nh iu hnh l overloadable trong C + +. "Bao gm C" c ngha l nh iu hnh tn ti v c mt ngha ng ngha trong C (nh khai thc khng overloadable trong C).
[ sa ]cc

nh khai thc s hc
V d th nghim (T l bt k loi) Bao C Overloadable gm php trongC

Nh iu hnh tn

L thnh vin ca T

Bn ngoi nh

C bn chuyn nhng

a =b

T & T:: operator = (const T& b);

N/A

Ngoi ra

a +b

TT:: nh iu hnh + (constT & b) const;

Nh iu hnh + (const T & a,c

Tr

a -b

TT:: nh iu hnh (constT & b) const;

T nh iu hnh (const T & a,const T

Nht nguyn cng vi ( s nguyn xc tin )

+ a

TT:: operator + () const;

Nh iu hnh + (cons

Nht nguyn m ( ph gia ngc )

- a

TT:: nh iu hnh - ()const;

T nh iu hnh - (co

Php nhn

a *b

TT:: nh iu hnh * (constT & b) const;

Nh iu hnh * (const T & a,c

Phng

a /b

TT:: nh iu hnh / (constT & b) const;

T nh iu hnh / (const T & a,c

Modulo (cn li)

a %b

TT:: nh

T nh

iu hnh% (const T& b) const;

iu hnh% (const T &

Tin t

++ a

T & T:: nh iu hnh + +();

T & operator + + (T &

Tng Hu t a ++ C C

TT:: nh iu hnh + +(int);

T nh iu hnh + + (

Lu : C + + s dng int gi tham s cha c t tn phn bit gia tin t v hu t cc nh khai thc t

Tin t

-- a

T & T:: nh iu hnh - ();

T & operator - (T & a

St ln Hu t a -C C

TT:: operator - (int);

T nh iu hnh - (T

Lu : C + + s dng int gi tham s cha c t tn phn bit gia tin t v hu t cc nh khai thc l

[ sa ]So

snh cc nh khai thc / cc nh khai thc quan h

V d th ngh Nh iu hnh tn C php Overloadable Bao gm trong C L thnh vin ca T

Bng

a == b

bool T:: operator == (const T & b) const;

Khng bng

a != b

bool T:: operator = (const T & b) const;

Ln hn

a > b

bool T:: operator> (const T & b) const;

t hn

a < b

bool T:: nh iu hnh <(const T & b) const;

Ln hn hoc bng

a >= b

bool T:: nh iu hnh> = (const T & b) const;

Nh hn hoc bng [ sa ]cc

a <= b

bool T:: nh iu hnh <= (const T & b) const;

nh khai thc hp l

V d th ng Nh iu hnh tn Bao gm C php Overloadable trong C L thnh vin ca T

Logic ph nh (khng)

! a

bool T:: nh iu hnh () const;

Logic AND

a && b

bool T:: nh iu hnh & (const T & b) const;

Logical OR [ sa ]bit

a || b

bool T :: operator || ( const T & b ) const ;

cc nh khai thc

V d th Nh iu hnh tn C php Overloadable Bao gm trong C L thnh vin ca T

Bit khng

~ a

TT:: nh iu hnh ~ () const;

Bit,

a & b

TT:: nh iu hnh & (const T & b) const;

Bit OR

a | b

TT:: nh iu hnh | (const T & b) const;

Bit XOR

a ^ b

TT:: nh iu hnh ^ (const T & b) const;

Bit bn tri thay i [lu 1]

a << b

TT:: operator <<(const T & b) const;

Bit phi thay i [lu 1] [ sa ]Hp

a >> b

TT:: operator>> (const T & b) const;

cht nh khai thc chuyn nhng


C php Overloadable Bao gm

Nh iu hnh tn

V d th

trong C L thnh vin ca T

Ngoi ra giao

a += b

T & T:: operator + = (const T & b);

Tr chuyn nhng

a -= b

T & T:: operator = (const T & b);

Php nhn chuyn nhng

a *= b

T & T:: operator = (const T & b);

B phn chuyn nhng

a /= b

T & T:: nh iu hnh / = (const T & b);

Modulo chuyn nhng

a %= b

T & T::% nh iu hnh = (const T & b);

Bit v chuyn nhng

a &= b

T & T:: nh iu hnh & = (const T & b);

Bitwise OR chuyn nhng

a |= b

T & T:: nh iu hnh | = (const T & b);

Bit XOR chuyn nhng

a ^= b

T & T:: nh iu hnh ^ = (const T & b);

Bit bn tri giao dch chuyn

a <<= b

T & T:: nh iu hnh <<= (const T & b);

Bit phi thay i giao [ sa ]Thnh

a >>= b

T & T:: Nh iu hnh>> = (const T & b );

vin v cc nh khai thc con tr

Nh iu hnh tn

C php

Overloadable

Bao gm trong C L thnh

Mng subscript

a [ b ]

R & T:: operator []

Gin tip ("i tng c tr bi mt")

* a

R & T:: operator *

Ti liu tham kho ("a ch ca mt")

&a

T * T:: nh iu h

B thnh vin ca i tng ch bi mt

a -> b

R * T:: nh iu h

B thnh vin ca mt i tng

a . b

Khng c

Thnh vin ch b ca i tng c tr n bi mt lu [2]

a ->* b

Khng c RT:: nh iu hnh

Thnh vin ch bi b ca mt i tng [ sa ]cc

a .* b

Khng c

Khng c

nh khai thc khc

V d th nghi Nh iu hnh tn C php Overloadable Bao gm trong C L thnh vin ca T

Chc nng gi Xem i tng chc nng .

a ( a1, a2 )

RT:: operator () (ARG1 a1, Arg2 a2,

Comma

a , b

R & T:: nh iu hnh, (R & b) const

Ternary c iu kin

a ? b : c

Khng c

Phm vi phn gii

a :: b

Khng c

Khng c

Kch thc-

sizeof (a) [lu 4] sizeof ( type )

Khng c

Loi xc nh

typeid (a) typeid ( type )

Khng c

Khng c

Din vin

( type ) a

T:: nh iu hnh R () const;

Lu : i vi chuyn i ngi dng nh ngha, kiu tr v ngm v n

Phn b lu tr

new type

Khng c void * T:: nh iu hnh mi (size_t

Phn b lu tr (mng)

new type [ n ]

Khng c void * T:: nh iu hnh mi [] (siz

Deallocate lu tr

delete a

Khng c khong trng T:: nh iu hnh xa (

Deallocate lu tr (mng)

delete[] a

Khng c T trng:: nh iu hnh xa [] (void

Ghi ch:
1. ^ Trong bi cnh iostreams , nh vn thng tham chiu n <<v>> l "a n" hoc "chn dng" v "t" hoc "dng thc" cc nh khai thc, tng ng. 2. 3. Mt v d c th c tm thy trong "Thc hin iu hnh-> cho con tr thng minh" ca Scott Meyers. ^ Trong trng hp ni -> * nh iu hnh l lm vic ging nh thc hin mc nh, tham s R s l phng php con tr n mt phng php ca T lp hc v gi tr tr li phi c mt s loi i tng hm t sn sng c gi l (ch) cc thng s phng php. 4. ^ ngoc l khng cn thit khi kch thc ca mt gi tr, ch khi kch thc ca mt loi . Tuy nhin, chng thng c s dng bt k.
b b

[ sa ]iu

hnh u tin

Sau y ban chi c danh sch cc u tin v associativity tt c cc nh khai thc trong th mc C v C + + ngn ng (khi cc nh iu hnh cng tn ti trong Java , Perl , PHP v ngn ng khc nhiu gn y, u tin cc l nh rng [ c trch dn cn thit ]). Cc nh khai thc c lit k trn xung di, gim dn u tin. Gim dn u tin cp n cc u tin nh gi. Xem xt mt biu thc, mt nh iu hnh c lit k trn mt s dng s c nh gi trc khi cho bt k nh iu hnh c lit k trn mt hng di n. Cc nh khai thc trong cng mt t bo (c th c mt s hng ca cc nh khai thc c lit k trong mt t bo) c nh gi vi cng mt u tin, theo hng nht nh. u tin ca nh khai thc l khng b nh hng bi qu ti.

C php ca biu thc trong C v C + + c quy nh bi mt ng php ng cnh [ cn dn ngun ] Cc bng a ra y c suy ra t ng php. [ cn dn ngun ] i vi tiu chun ISO 1999 C, mc 6.5.6 lu 71 bang rng ng php C c cung cp bi c im k thut xc nh cc u tin ca cc nh khai thc C, v cng ni rng cc nh iu hnh u tin t ng php cht ch sau phn c im k thut t hng: "[C] c php [tc l, ng php quy nh c th cc u tin ca cc nh khai thc trong vic nh gi mt biu thc, m l ging nh th t ca cc im chnh ca subclause, cao nht c u tin u tin." Mt bng u tin, trong khi hu ht l y , khng th gii quyt mt vi chi tit. c bit, lu rng cc nh iu hnh ternary cho php bt k biu hin ty nh l ton hng trung ca n, d c lit k nh l c u tin cao hn v cc nh iu hnh giao du phy . Nh vy a ? b , c : d a ? b , c : d c hiu nh l a ? (b, c) : d a ? (b, c) : d , v khng phi l v ngha (a ? b), (c : d) . Ngoi ra, lu rng, ngay lp tc unparenthesized kt qu ca mt biu thc dn din vin C khng th l ton hng sizeof sizeof . Do , sizeof (int) * xc hiu nh l (sizeof(int)) * x v khng sizeof ((int) *x) .
u tin Nh iu hnh M t Associativity

::

Phm vi phn gii (C + +)

Tri sang phi

++

Hu t tng

--

Hu t st ln

()

Chc nng gi

[]

Mng subscripting

Yu t la chn bng cch tham chiu

->

Yu t la chn thng qua con tr

typeid()

Thi gian chy loi thng tin (C + +) (xem typeid )

const_cast

Loi c (C + +) ( din vin const )

dynamic_cast

Loi dn din vin (C + + ch) (xem dynamic_cast )

reinterpret_cast Loi dn din vin (C + +) (xem din gii li dn din vin )

static_cast

Loi dn din vin (C + +) (xem din vin tnh )

++

Tin t tng

T phi sang tri

--

Tin t st ln

Nht nguyn cng

Nht nguyn m

! 3 ~

Hp l khng

Logic bitwise KHNG

( type )

Loi dn din vin

Gin tip (dereference)

&

a ch

sizeof

Kch thc-

new , new[]

Cp pht b nh ng (C + + ch)

delete , delete[] Deallocation b nh ng (C + + ch)

.* 4 ->*

Con tr tr ti thnh vin (C + + ch)

Tri sang phi

Con tr tr ti thnh vin (C + + ch)

Php nhn

phn chia

module (cn li)

+ 6 -

Ngoi ra

tr

<< 7 >>

Bit li s thay i

Bit phi thay i

<

i vi cc nh khai thc quan h <tng ng

<= 8 >

i vi cc nh khai thc quan h tng ng

i vi cc nh khai thc quan h> tng ng

>=

i vi cc nh khai thc quan h tng ng

==

Quan h = tng ng

!=

Quan h tng ng

10

&

Bit,

11

Bit XOR (c quyn hoc)

12

Bit OR (hoc l)

13

&&

Logic AND

14

||

Logical OR

15

?:

Ternary c iu kin (xem : )

T phi sang tri

Giao trc tip (c cung cp mc nh cho cc lp hc C + +)

+=

Chuyn nhng bng cch tng hp

-=

Phn bi s khc bit

*=

Phn cng ca sn phm

16

/=

Chuyn nhng bng thng

%=

Chuyn nhng bng cch cn li

<<=

Phn cng ca s thay i tri bitwise

>>=

Phn cng ca s thay i quyn bitwise

&=

Phn cng ca bitwise V

^=

Phn cng ca bitwise XOR

|=

Phn cng ca bitwise OR

17

throw

Vt iu hnh (trng hp ngoi l nm, C + +)

18

Comma

Tri sang phi

[ sa ]Ghi

ch

Bng u tin xc nh th t rng buc trong biu thc chui, khi n khng phi l r rng quy nh bng du ngoc n.

V d, ++x*3 l m h m khng c mt s nguyn tc u tin (s). Bng u tin cho chng ta bit rng: x l 'b rng buc cht ch hn + + hn *, v vy bt c iu g + + (ngay by gi hoc sau , xem di y), n c phi n ch x (v x*3 3 ) , n tng ng vi ( ++x , x*3 ). Tng t nh vy, vi 3*x++ , ni mc d cc bi-sa cha + + c thit k hot ng sau khi cc biu hin ton b l nh gi, cc bng u tin lm cho n r rng rng ch x c tng ln (v khng 3*x ); n l chc nng tng ng mt ci g nh ( tmp=3*x , ++x , tmp ) vi tmp mt gi tr tm thi.

u tin v cam kt rng buc

Tru tng ha vn u tin hay rng buc, hy xem xt s trn. Cng vic ca trnh bin dch gii quyt s vo mt biu thc, m trong cc nh khai thc nhiu nht nguyn (gi 3 + (.), 2 * (.), (.) + + V () [i].) ang cnh tranh rng buc y. Th t ca

bng u tin gii quyt cui cng ph biu hin h mi hnh khi: (.) (.) (.) [I] ch hnh y, + + hnh vi ch y [i], 2 hnh vi ch v y [ i] + + v 3 + hnh vi 'ch' ngy 2 () * ((y [i ])++). N l quan trng lu rng G biu hin tiu c hnh ng trn ca mi nh khai thc l r rng t cc bng u tin nhng KHI mi hnh vi iu hnh l khng gii quyt cc bng u tin; (.) Trong v d ny, cc + + nh iu hnh hnh vi ch v y [ i] theo cc quy tc u tin nhng mc rng buc mt mnh khng cho bit thi gian ca Suffix + + ((.) + + nh iu hnh hnh vi ch sau khi y [i] c nh gi trong biu thc). Nhiu ngi trong s cc nh khai thc c cha cc chui k t nhiu "tn" c xy dng t tn nh iu hnh ca mi k t. V d, += v = thng c gi l cng bng (s) v tr i bng (s),thay v "chuyn nhng bng cch thm nhiu chi tit v phn cng ca php tr" . Lin kt ca cc nh khai thc C v C + + c quy nh c th (trong tiu chun tng ng) bng mt ng php ngn ng yu t, ch khng phi l mt bng u tin. iu ny to ra mt s xung t tinh t. V d, trong C, c php cho mt biu thc iu kin l: hp l - HOC - biu hin? biu hin: c iu kin - biu hin trong khi C + + l: hp l - HOC - biu hin? - biu hin Do , cc biu hin: e = a <d? + +: a = d l phn tch c php khc nhau trong hai ngn ng. Trong C, biu thc ny l mt li c php, nhng trnh bin dch nhiu phn tch n nh l: e = ((a <d a + +: a) = d) m l mt li ng ngha, t kt qu ca biu thc iu kin (m c th l mt + +) khng phi l mt lvalue. Trong C + +, l phn tch c php nh: e = (a <d a + +: (a = d)) l mt biu thc hp l. biu hin: chuyn nhng

u tin ca cc nh khai thc hp l bitwise b ch trch [1 ] Khi nim, & v | l nh khai thc s hc nh + v *. Biu thc a & b == 7 l c php phn tch c php nh mt & (b == 7) trong khi biu thc a + b == 7 l phn tch c php nh (a, b +) == 7. iu ny i hi du ngoc n c s dng thng xuyn hn hn bnh thng.
[ sa ]C

+ + nh iu hnh t ng ngha

C + + nh ngha [1] t kha hnh ng nh b danh cho mt s nh khai thc and (&&), bitand (&), and_eq (&=), or (||), bitor (|), or_eq (|=), xor (^), xor_eq (^=), not (!), not_eq (!=), compl (~) xor and (&&), bitand
(&), and_eq (&=), or (||), bitor (|), or_eq (|=), xor (^), xor_eq (^=), not

. y c th c s dng chnh xc theo cng mt cch nh nhng biu tng m n thay th nh h khng phi l cc nh iu hnh di mt tn khc nhau, nhng b danh vn bn kh n gin cho tn (chui k t) ca nh iu hnh tng ng. V d, bitand c th c s dng thay th khng ch cc nh iu hnh bitwise nhng cn a ch ca nh iu hnh, v thm ch n c th c s dng xc nh kiu tham chiu (v d int bitand ref = n; ).
(!), not_eq (!=), compl (~)

ANSI C c im k thut lm cho tr cp cho cc t kha nh cc macro tin x l trong cc tp tin iso646.h iso646.h. i vi kh nng tng thch vi C, C + + cung cp cc tiu ciso646ciso646, bao gm trong khng c hiu lc .

You might also like