מונחה עצמים- תרגול 6 | Destructor, static, inline, friend, namespace

  • Upload
    ron

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    1/31

    Jmaoi| J}eof|ol W}jd}ckkefd\e}du` 8

    loy|}ui|j}

    ofuky|c|ei

    ef`efo

    i`cyy h}eofl

    fckoywcio

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    2/31

    Loy|}ui|j}

    ,,

    .#%

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    3/31

    Loy|}ui|j}

    1

    Lc|c,Lc|c+inc}

    @efbol@ey|

    yeqo

    nocl

    nocl

    Fjlo

    Lc|c

    wLc|c

    wLc|c

    f

    f

    Fjlo

    Lc|c

    wLc|c

    wLc|c

    f

    f

    Fjlo

    Lc|c

    wLc|c

    wLc|c

    f

    f

    Fjlo

    Lc|c

    wLc|c

    wLc|c

    f

    f

    fcko

    fcko fcko

    fcko fcko

    fcko fcko

    fcko

    CCC MMM III LLL

    w

    w w

    w w

    w w

    w

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    4/31

    Loy|}ui|j}

    @efbol@ey|

    yeqo

    noclnocl

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    fckofcko fckofcko fckofcko fckofcko

    CCC MMM III LLL

    ww ww ww ww

    Lc|c11vLc|c r

    lo`o|o R[ fcko2{

    Lc|c:

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    5/31

    Loy|}ui|j}

    @efbol@ey|

    yeqo

    noclnocl

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    fckofcko fckofcko fckofcko fckofcko

    CCC MMM III LLL

    ww ww ww ww

    Lc|c11vLc|c r

    lo`o|o R[ fcko2

    {

    Fjlo11vFjlor

    eh .w#;Fu``%w6f;f2

    eh .f#;Fu``%

    f6w;w2

    wLc|c6vLc|c.%2

    {

    Fjlo:

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    6/31

    Loy|}ui|j}

    @efbol@ey|

    yeqo

    noclnocl

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    fckofcko fckofcko fckofcko fckofcko

    CCC MMM III LLL

    ww ww ww ww

    Lc|c11vLc|c r

    lo`o|o R[ fcko2

    {

    Fjlo11vFjlor

    eh .w#;Fu``%w6f;f2

    eh .f#;Fu``%

    f6w;w2

    wLc|c6vLc|c.%2

    {

    +Fjlo

    +

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    7/31

    Loy|}ui|j}

    @efbol@ey|

    yeqo

    noclnocl

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    fckofcko fckofcko fckofcko fckofcko

    CCC MMM III LLL

    ww ww ww ww

    Lc|c11vLc|c r

    lo`o|o R[ fcko2

    {

    Fjlo11vFjlor

    eh .w#;Fu``%w6f;f2

    eh .f#;Fu``%

    f6w;w2

    wLc|c6vLc|c.%2

    {

    +Fjlo

    +

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    8/31

    Loy|}ui|j}

    @efbol@ey|

    yeqo

    noclnocl

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    fckofcko fckofcko fckofcko fckofcko

    CCC MMM III LLL

    ww ww ww ww

    Lc|c11vLc|c r

    lo`o|o R[ fcko2

    {

    Fjlo11vFjlor

    eh .w#;Fu``%w6f;f2

    eh .f#;Fu``%

    f6w;w2

    wLc|c6vLc|c.%2

    {

    +Fjlo

    +

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    9/31

    Loy|}ui|j}

    @efbol@ey|

    yeqo

    noclnocl

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    fckofcko fckofcko fckofcko fckofcko

    CCC MMM III LLL

    ww ww ww ww

    Lc|c11vLc|c r

    lo`o|o R[ fcko2

    {

    Fjlo11vFjlor

    eh .w#;Fu``%w6f;f2

    eh .f#;Fu``%

    f6w;w2

    wLc|c6vLc|c.%2

    {

    ,

    +Lc|c&

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    10/31

    Loy|}ui|j}

    @efbol@ey|

    yeqo

    noclnocl

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    fckofcko fckofcko fckofcko fckofcko

    CCC MMM III LLL

    ww ww ww ww

    Lc|c11vLc|c r

    lo`o|o R[ fcko2

    {

    Fjlo11vFjlor

    eh .w#;Fu``%w6f;f2

    eh .f#;Fu``%

    f6w;w2

    lo`o|o wLc|c2

    {

    ,

    +Lc|c&&

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    11/31

    Loy|}ui|j}

    @efbol@ey|

    yeqo

    noclnocl

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    Fjlo

    Lc|c

    wLc|cwLc|c

    ff

    fckofcko fckofcko fckofcko fckofcko

    CCC MMM III LLL

    ww ww ww ww

    Lc|c11vLc|c r

    lo`o|o R[ fcko2

    {

    Fjlo11vFjlor

    eh .w#;Fu``%w6f;f2

    eh .f#;Fu``%

    f6w;w2

    lo`o|o wLc|c2

    {

    ,

    +Lc|c&&

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    12/31

    ofuk

    ofukI1

    ef|

    I""1

    I

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    13/31

    ofuk ef I""

    ofuk%w}exc|o, wum`ei.

    ofuk%.1i`cyyZfcko11|cd

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    14/31

    ofuk ij`j} r]OL, D]OOF, M@_O{2

    i`cyy OfukO~r

    w}exc|o1

    ofuk lc rY_F, KJF, \_O{2

    wum`ei1

    ofukm}edn|foyy rM@CIB, TNE\O{2

    xjel yo|Ij`j}.ij`j} i`}% r

    r kZi`} ; i`}2 {xjel yo|M}edn|foyy.m}edn|foyy m}|%

    r kZm}| ; m}|2 {

    w}exc|o1

    ij`j} kZi`}2

    m}edn|foyy kZm}|2

    lc kZlc2

    {2

    xjel kcef.%r

    ** `odc` ef mj|n I cfl I""

    ofuk ij`j} | ; M@_O2

    ** `odc` jf` ef I""

    ij`j} i`} ; ]OL2

    ** ciioyy m I`cyyFcko11|cd

    OfukO~11m}edn|foyy m}| ;OfukO~11M@CIB2

    ** icf| ciioyy w}exc|o ofuk

    OfukO~11lc l ; OfukO~11Y_F2

    OfukO~ jma2

    jma&yo|Ij`j}.M@_O%2

    jma&yo|M}edn|foyy.OfukO~11TNE\O%2{

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    15/31

    %y|c|ei.

    |ney

    %|ney.

    %efy|cfioy.

    ,w}exc|owum`ei

    iwwn

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    16/31

    +I

    %.,

    |ney

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    17/31

    ** Wjef|&n1 ef|o}hcio hj} |no Wjef| i`cyy&

    i`cyy Wjef|

    r

    wum`ei1

    Wjef|.%2

    Wjef|.ef| ~,ef| %2

    Wjef|.ijfy| Wjef|(%2

    vWjef|.%2

    xjel Yo|^.ef| ~% rkZ~;~2{

    xjel Yo|U.ef| % rkZ;2{ef| Do|^.% r}o|u}f kZ~2{

    ef| Do|U.% r}o|u}f kZ2{

    xjel Ynjt.%2

    y|c|ei ef| Do|Efy|cfioyIjuf|o}.%

    r}o|u}f kyZijuf|o}2{w}exc|o1

    ef| kZ~2

    ef| kZ2

    y|c|ei ef| kyZijuf|o}2

    {2

    ** Wjef|&iww1 i`cyy ekw`okof|c|ejf

    )efi`ulo -Wjef|&n-

    )efi`ulo 0ejy|}ock6

    ** kuy|mo lohefol no}o

    ef| Wjef|11kyZijuf|o} ; 72

    Wjef|11Wjef|.% r""kyZijuf|o}2 {

    Wjef|11Wjef|.ef| ~, ef| % r

    kZ~;~2 kZ;2

    ""kyZijuf|o}2

    {Wjef|11Wjef|.ijfy| Wjef|( w% r

    kZ~;w&kZ~2 kZ;w&kZ2

    kyZijuf|o}""2

    {

    Wjef|11vWjef|.% r ++kyZijuf|o}2 {xjel Wjef|11Ynjt.%

    r

    iju|00-~ xc`uo ey1 -00kZ~00$P|$2

    iju|00- xc`uo ey1 -00kZ00ofl`2

    {

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    18/31

    ** kcef&iww

    xjel MXc`uoHufi|ejf.Wjef| w% r

    iju|00Wjef|11Do|Efy|cfioyIjuf|o}.%2

    {

    xjel M]oho}ofioHufi|ejf.Wjef|( w% r

    iju|00Wjef|11Do|Efy|cfioyIjuf|o}.%2

    {

    xjel kcef.% r

    Wjef| w3,w=2

    iju|00Wjef|11Do|Efy|cfioyIjuf|o}.%2

    MXc`uoHufi|ejf.w3%2

    ** mo||o} uyo Wjef|11Do|Efy|cfioyIjuf|o}.%2iju|00w=&Do|Efy|cfioyIjuf|o}.%2

    M]oho}ofioHufi|ejf.w3%2

    {

    =

    9

    =

    =

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    19/31

    i`cyy

    %&.1$

    xjel h.% r

    y|c|ei ef| efy| ; 72iju| 00 -efy|;- 00 efy|"" 00 ofl`2

    {

    iww,+y|c|ei%I.

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    20/31

    ef`efo

    1

    ,

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    21/31

    ef`efo

    ef`efo

    ef`efo

    ef`efo%+kci}j.

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    22/31

    +ef`efo1&3+

    ef`efo&=

    ef`efo

    &9ef`efo%&n.&

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    23/31

    ** uyo jh }odu`c}, d`jmc` hufi|ejf

    ef| kc~ .ef| c, ef| m% r

    }o|u}f .c 6 m% : c 1 m2

    {

    \no hj``jtefd ijlo1

    ef| b ; kc~.=, 9%2

    te``1

    3& c``jic|o w`cio jf |no y|cib

    =& ijw= |j c cfl 9 |jm9& ijw }odey|o}y xc`uoy

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    24/31

    ** He`o1 KI`cyy&n

    i`cyy KI`cyy

    r

    wum`ei1

    ** o~w`eie| ef`efo

    ef| kc~ .ef| c, ef| m%2

    ** ekw`eie| ef`efo

    ef| kef .ef| c, ef| m%

    r }o|u}f .c 0 m%: c 1 m2 {

    {2

    ef`efo ef| KI`cyy11 kc~ .ef| c, ef| m% r

    }o|u}f .c 6 m%: c 1 m2

    {

    ef`efoi`cyy1** He`o1 _yo&iww

    **

    xjel hufi .KI`cyy ki%

    r

    ** ef`efo, ohheieof| cy1 k ; .c 6 m%: c 1 m2

    ef| k ; ki&kc~ .9,

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    25/31

    h}eofl i`cyy

    h}eofl

    -

    &

    &

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    26/31

    h}eofl i`cyy

    $h}eofl1i`cyy wjef| r

    w}exc|o1

    ef| kZc, kZm2

    wum`ei1

    wjef|.ef| c, ef| m%1 kZc.c%, kZm.m% r{

    h}eofl xjel ynjt.wjef| w%2

    {2

    xjel ynjt .wjef| w% r

    iju| 00 w&kZc 00 - - 00 w&kZm 00 ofl`2

    {

    xjel kcef.% rwjef| w.7,3%2ynjt.w%2

    {

    ** te`` w}ef|1 7, 3

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    27/31

    h}eofl i`cyy $h}eofl,i`cyyh}eofl

    +h}eofl$

    +

    i`cyy i`cyyH}eofl2 ** hj}tc}l loi`c}c|ejf

    i`cyy wjef| r

    w}exc|o1

    ef| kZc, kZm2

    wum`ei1

    wjef|.ef| c, ef| m%1 kZc.c%, kZm.m% r{

    h}eofl i`cyy i`cyyH}eofl2

    {2

    i`cyy i`cyyH}eofl rw}exc|o1 ef| kZ~2wum`ei1

    i`cyyH}eofl.ef| ~%1 kZ~.~% r{xjel ynjt.wjef| w%

    r iju| 00 kZ~ 00 w&kZc 00 w&kZm 00 ofl`2 {{2xjel kcef.% r

    wjef| w.7,3%2 ynjt.w%2i`cyyH}eofl ih.

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    28/31

    %.

    n%,+h}eofl

    .

    ,:

    efi`ulo+n

    hufi.%

    fckoywcio

    **i`cyy3&n

    hufi.% r{

    i`cyy i`cyy3 r

    {

    **i`cyy=&n

    hufi.% r{

    i`cyy i`cyy= r

    {

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    29/31

    fckoywcio

    )efi`ulo 0ejy|}ock6

    uyefd fckoywcio y|l2

    fckoywcio ywcio3 r

    h`jc| cxo}cdo.h`jc| c, h`jc| m% r}o|u}f .c " m%*=2

    {

    {

    fckoywcio ywcio= r

    h`jc| cxo}cdo.h`jc| c, h`jc| m% r}o|u}f .c " m%*92

    {

    {

    1fckoywcio#

    fckoywcioP

    Pef| kcef.% r

    h`jc| e ; 42

    h`jc| a ;

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    30/31

    fckoywcio

    )efi`ulo 0ejy|}ock6

    uyefd fckoywcio y|l2

    fckoywcio ywcio3 r

    h`jc| cxo}cdo.h`jc| c, h`jc| m% r}o|u}f .c " m%*=2

    {

    {

    fckoywcio ywcio= r

    h`jc| cxo}cdo.h`jc| c, h`jc| m% r}o|u}f .c " m%*92

    {

    {

    1fckoywcio#

    -uyefd fckoywcio uyefd fckoywcio ywcio32ef| kcef.% r

    h`jc| e ; 42

    h`jc| a ;

  • 7/30/2019 Destructor, static, inline, friend, namespace | - 6

    31/31

    fckoywcio)efi`ulo 0ejy|}ock6uyefd fckoywcio y|l2fckoywcio he}y| r

    ef| ~ ; ?2

    ef| ; 372

    {

    fckoywcio yoijfl r

    ljum`o ~ ; 9&392

    {

    ef| kcef .% ruyefd he}y|11~2

    uyefd yoijfl112

    iju| 00 ~ 00 ofl`2

    iju| 00 00 ofl`2

    iju| 00 he}y|11 00 ofl`2

    iju| 00 yoijfl11~ 00 ofl`2

    }o|u}f 72

    {

    1)efi`ulo 0ejy|}ock6uyefd fckoywcio y|l2

    fckoywcio he}y| r

    ef| ~ ; ?2

    ef| ; 372

    {

    fckoywcio yoijfl r

    ljum`o ~ ; 9&392

    {

    ef| kcef .% ruyefd fckoywcio he}y|2

    iju| 00 ~ 00 ofl`2

    iju| 00 00 ofl`2

    iju| 00 yoijfl11~ 00 ofl`2

    iju| 00 yoijfl11 00 ofl`2

    }o|u}f 72

    {

    ?

    =&43>9

    37

    9&3