Employee . :
static unsigned int currentId;
, . ', . '. ' , ' ,
unsigned int Employee:: currentId = 0;
³ , .
16. . . (+).. . .
++ . () .
() , ᒺ, . , .
. , . ++.
³ , , ᒺ : - ( ). , , ~ ( ) ᒺ ~ W, operator ~():
W. operator ~(); // -
operator ~(W); // ( )
. , + ᒺ X Y ( X + Y) :
X. operator +(Y); // -
operator +(X, Y); // ( )
X. operator +(Y) , operator +() ᒺ X . , , X , Y. operator +(X) .
, , , , 䳿. , , . , .
, n - , n . - (n -1) . , . .
|
|
,
1. .
2. ʳ .
3. .
17. (=). . .
(operator =()) - , , . ³ operator = .
, , . ﳿ.
2.5.8
# include <iostream>
usingnamespae std;
class A
{
public:
int i;
A ()
{
i = 0;
}
A (int i)
{
this -> i = i;
}
A & operator = (A & a)
{
i = a. i;
return * this;
}
show ()
{
cout <<" i="<< i << endl;
}
};
void main ()
{
A a, a1 (10);
a = a1;
a. show ();
}
ᒺ. ³ c : return * this. , operator =() ᒺ, .
18. ++ ( ). . .
(operator ++(), operator --()) - . . ³ . ( this) .
( ++ x), int - ( x ++). , .
2.5.13
# include <iostream>
usingnamespae std;
class A
{
public:
int i;
A ()
{
i = 0;
}
A (int i)
{
this -> i = i;
}
intoperator ++ (int) //
{
int i = this -> i;
this -> i ++;
return i;
}
intoperator ++ () //
{
i++;
return i;
}
show ()
{
cout <<" A::i="<< i << endl;
}
};
void main ()
{
A a (5);
int j =a ++; //
cout <<" j="<< j;
a. show ();
a.i= 5;
j =++a; //
cout <<" j="<< j;
a. show ();
}
19. -- ( ). . .
18
20. . . .
|
|
: = (), <>( ), < (), >(), <=( ), >=( ) boolean. , , : 1) Not; 2) And; 3) Or, Xor; 4) =, <>, <, >, <=, >=.
, . . .
,
(A=B) and (C<=D)
: A=B, C<=D And.
21. (<<). .
<< , . (), , <<
22. (>>). .
( >>) - (, , ). (false), , ᒺ, . falbt badbt . , .
23. . . .
.
.
.
, .
24. . .
. , , . , .
25. . , . .
09051004010031000102000018 () .
. , ᒺ , , ᒺ.
. , , ᒺ.
́ () 090001010031000102000018 . ().
, - . , - . . .
|
|
26. .
...(...):base(...){...},
. ϳ base . , .
' :
public ' , - ;
protected ' , ' , ;
private - . .
27. . ³ .
.
³
, ++, . , , , . ᒺ D .
28. . . . .
- 0910031000102000018, 0208004000081%.
; - . .
, ' , - (early binding) ' (late binding) . - ' -. ' , ' - ' .
: ++ ' , . ' . , . , .
29. ³ . .
³ ' 09011010001110100200005010031000102000018'- , .
this.
30. ³ . .
³ , (00030109118000000200. virtual method table, VMT, vtable) , 0900200010031000102000018 ( ' ).
³ ' ' . '. ³ ' , . ', , (, ), : , . , '01111000180001000100811811001109%B%5D%22%5BHYPERLINK%20%22%22%5B1%5D%221HYPERLINK%20%22%22%5B1%5D%22%5D"[HYPERLINK "5D%22%5BHYPERLINK%20%22%22%5B1%5D%221HYPERLINK%20%22%22%5B1%5D%22%5D"1HYPERLINK "5D%22%5BHYPERLINK%20%22%22%5B1%5D%221HYPERLINK%20%22%22%5B1%5D%22%5D"]
|
|
. ' , , (00030109118000000200. virtual table pointer 00030109118000000200. vpointer), ' ( 01111000180001000100811811001109%B%5D%22%5BHYPERLINK%20%22%22%5B2%5D%222HYPERLINK%20%22%22%5B2%5D%22%5D"[HYPERLINK "5D%22%5BHYPERLINK%20%22%22%5B2%5D%222HYPERLINK%20%22%22%5B2%5D%22%5D"2HYPERLINK "5D%22%5BHYPERLINK%20%22%22%5B2%5D%222HYPERLINK%20%22%22%5B2%5D%22%5D"]). 090011110101010031000102000018 ' .
31. . . .
a . ( , ) .
- , .