.


:




:

































 

 

 

 


C




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 . ( , ) .

 

- , .

 

 





:


: 2016-07-29; !; : 813 |


:

:

- , .
==> ...

2011 - | 1799 -


© 2015-2024 lektsii.org - -

: 0.058 .