From 162bf68b8cc95f4e5ae0dae7b6fb78918476ae42 Mon Sep 17 00:00:00 2001 From: sinoding Date: Fri, 13 May 2011 20:14:46 +0800 Subject: [PATCH] ch22 & ch23 commit --- ch21/more_fancy | Bin 26719 -> 24955 bytes ch21/pointer_virtual | Bin 10486 -> 22970 bytes ch23/reference_virtual | Bin 0 -> 10933 bytes ch23/reference_virtual.cc | 57 ++++++++++++++++++++++++++++++++++++++ ch25/design_pattern.cc | 4 --- 5 files changed, 57 insertions(+), 4 deletions(-) create mode 100755 ch23/reference_virtual create mode 100644 ch23/reference_virtual.cc diff --git a/ch21/more_fancy b/ch21/more_fancy index ff69941c83b58cf2f8137b206c2af1d60acf14de..df9e0e52cbafc4a43ef4069f7c26c4f73dda0d23 100755 GIT binary patch literal 24955 zcmcJ13w)eanfEy}$z3>x_YuH6|>y9ul&=Tnd}4hM%a>sD&a~CfRWzwNW z7^3X}eyrlU4O?;4-Nkaw#E<-O_^~g^KQ#ZTfiKSvwe9Sm{);m4z~*~4uAW35ZH&RM z3cm{c+{t!7ZLwb~@hiuV{;`}g{MZzjFKNoxS z`%~X}eax(;pSF(MSFu`lmwpMXQPZ8^)E42g4#6Vy`cddjaI~16J)_WX9fiIR_KVpm zA4R@v6#8|rGZmvLIIbNzA-1U_;t}$s?;qc;D3*Q{7|T6k<^jdTVXdKmq=5cG&}(34 zm$4s!U8V*2(ayaE@&a*}$;M-I<}lh8i%6uaH=T-PveEu*BqAc03`RC3x{{e}qJMQy zG?PhWAQIaVjr0xlCnAH%{_H@sM?|jLusORVna)HyqM5|PmQ*skrlDyN^evZfXqZop z9np^DU_-+N$kR?FyR$D5Nv1l}O_180T^LIbWR;zCPo^oZXg!&h&Dn;ASa-BPlI@Qs zvzeAyQ`08U7ND49ERxP-`xDXLme`g^)8<8ywo7B$Rw5PeX^Fiz-7S$V^P#;Mbwwpu zc-z`do70;k^sB)8M${yeELMRL)nCo(qiuV2vu2VhVqLLVBtuFAv6yXgwr4b(*pWmF zM947h-y4P6y4IFet0Rq}#?T_MdfT>@t6Cxrp#_?}ZChkPXd(Mok6#bQqZfG(#&8M# znDeOlL1M&Si&(JZXJB#?Q$eY?$HWKuJ4f)nF1|;NdFnI$NFxY5l|jgq8Gl^R}c8UFEg&BHG>-}?Vfwry!SeDGjpSTrAgV!i^0pBobv$2UUZ^*wu7 z_vYQD*N+W~<_{grdQKlzRo~-ITbqYp-b}$=7u{PC6k_1gM;@wa7f`zgX!HAjcYxRv zfA%)t`a9XY^jKzkXLbD=fkr$in}~^s{loB1445%jX9r&rDtf> z7b#PLKBl?1(6=Z;(LM^AHuu~+E^`;aoT|c8hm6mG;hWwb9yoRDO>fJA^WJ~cDR$hz z)W`j2z>}{)^&zf14+r4bW2CXXZ-A`zAEWf+47uZ9M-QSYjMZTC@J*-wSY6X}5{LE2 zADdMbHtu}V?asYGns+yyYTk|h3!n~^-_~?o(S{G7ewHR)93gQ{ovrJrY&Id=(DzoPM_pjk8F4n_FLZ+hL*Zg zyAEFSL{$2T<2Sv{3S8;@nuBj??ozs)<_ug0_Hi6*0~Vtj>naO!)? zO?r2&jHv#d!`?29ga_bvH6a1fU;p9nMZa**bjV z^i$2l*G$K3@%tsMvtM30{7%d8o6S$W<82xK`SGv5g`W7(tJx_HzvR5xI{a4a@SAIf z|8wQ(anCp3dI)pG?*{&(dG|Hb(J?*K1FgH`(k)4d*;A(n{J%S+x?VI7{{++6?$xK7@7R1w(O)&QjGpg~ z&-pX_;|x#hT;mX%NNWdDv1~G(TDB~n=uZwtv&q2(>2H7K56`aeXuFtstny(61O};2 z29C41A&&$n(eF$TS7`XAfr^Mjuv*in77eU>xuy;CBJJpY~vWnh$stU>o440Q&%s0-gkH$8Y!Y%uK%QAq=HCOEDWLK9Tllh<0xPQmw|Q1q`aBren z$Kd}k^)LHq>21D9RruDjk9qF&-cjP&R>e&U&zrvpxiI`RT}EjqVMbKx$k?z$W5&|+ zh(KUUr9#NPHOo-l!PO=d@l z#_gW=lt<%ZA;a{2Q=Z*ZPt;_g+S23+xG`kfU)QdnZ6l5cCbl1w-3w39sF+_CRyj*Q z>eD#eoT*(Mb9-D{K8B8}PrH#vJ1gA!anj%`4Bwdf{|@YRrow_Yn0~s>z?6YE8+fOI zpEvM610OT+M+UxNV4?kWt5+`z&caol*};XO#i9A4kPvK~-_S6BVdK)^tiJw4f1)RW zGw|8sYcQnyO1C)o(@bMbzrSGOSEV!+Qi zvYHlZa1{p@0$|mat*Qs5wrux3P^~SyLlf_urFb7(tH7QC1@_*hz+De3@bRB3@QF7R z_+%X#rMB!-a}@aWQU&%!75L0Y6!?d)D)8B33f%pM0-vu$9cs(=&sX68ZcyN!?FxMH z;|hHFTMGR1^9p>8y;xgz-U8dBhyPb+ZrA%MEFv2re^ z_qwujd6|M0@&>?hUx&Zd4W36a#Yq)!{?9TRYR6pgTou8Rh5*6R^#ESBoB!^~a9}(y zk;~6O>x^?DF2_#rOn4jJKDOSo9g@;3C%oeU8uUB}Ge9Rw%8fnKBL|>#BYu<4$JKNx zCd-**O!3Iu9pWU07ydUz?f$jGIoXL2VufWoj zT9nV&oU#UoAE2(no4}#s_NT!;>lswSv*KwSDJg6cq3E0+Sbq@?s_2-eH1(VV_Fv@wo^ zAh}wyUVf6ya<6KM`$<;^Q{1;esHSwi>}8oP9wo;Cr1Y)3|3qe+W^!0*CM`{cYK%qf z)Lf3XeD1}p>T&HI2cdTC99e;g@x7+$^|F*wgYwgCsH-Wpn6)JuB#NftY)~(`#QL^t zIgVc4GzG%-asfN7ORC!Jrx*_~@+E+3ZR!2+-uEeO=~>5;%DIcB>3Vq$tN5mNmh(ei z6Mu`X^R{Mk)=*3+Jpn=ARk~d`jc8w$aocnQuwL`1kL8gi$)w@Jd*%ln@Wd{)7{aTI#uTZXD9%M0TEy200z|WvES1+^l^${(` zxi06cmG}W&dY_iyG^izv`pZ=Rwq|m2%wzr<1IX8>JL4)c)j`Fv>3$BuY4R0z+CDWf zIHhV&S!eLR#DLnbx}5WD&OPw{8{^UUsN!+*&ExH*%{|H{XXHGayqx9xlZr}C(=NSw z`9t!ydKI${WfwLZY3PMX0M%#XFg@EVmQ;R-^Stjqv{dDX=?~Y_%g_OpAJJHe5A&X= z9M+iM_cVF8YplZeW5jjkZjA+eA=Ik!qZ%9MI|0L$cW7*)k5@Y@@6^~7Uj%im{Fugq zz6Z&>i}SB%+ALokyr}#*cCJ_2SR+iHsL3$8}0(rkP7?q^jyadpbIlNzQFI2&et zUtl4U>sGF@tiT~!__(sb6|K-hz5Epg?$$+jQbL7+%DKlRJA9ht8t!{XH9uFxTydzw z3vj}BP;%Z<2hIE%P;9YEHo*OWpMKQKucBLhhvhSr^xVdkUCj!hzfRMuG@VPmHmxQEqsfuzTc_*6UBF1&<2e>uwFEZ^BPDv+7HwLB zdj~C{Mye_0OK2hA6?&j^TcP~mI>CF&zFnHZjfP>&kS7^&zv7YJO71?i^E4}F%5T#v zuL4Sd`w}fcRLqd4Y2Xze6`vcHJOjOu@>NL!CBUtW%fL+e0^4+{0!rWoM<7?TbLW9r z_ByvewPkPVU69x8f=bjbsJ807GWbwiHRoIa&ua(@=~;`c^o)hB^vpouNzbi3qCG+^ z^eK4>461|nNC#=4qyQ z;e(n^dMWTI_0@rmjIh{BUrOXNz(|q9RtmhEXu&Uem5M6ze#;9|RJ$=#PJ#!43fYH7 zK18XXQi{2}a+ZS~2*`&~oRa!;Q7KL*fpL=Sw33=iGs>1K@#kn<_{9k|Fj2O`FH+=1 zlzIvW@cuyF+435Im&m)4Jk_2v|xt+Z%tmhUsPa*4*~`+h^cOEtE{ zcOkJ>jfH(H;APEvjWzpbqNX()7?hrAZNBq}ZPeIhzV+0*OkDuC_cpC; z)z}u_$EkOP#g>>y~ z4hipnf?21;XIC*;#$E6f1m_3Q(&LsjKtjs-voYz6yU-xq*^axILf||H?Qvnvner;6 zY17GwYQ|W=Pq$`|)7H<$S&^~MtYh6E?{0k+yi(Sg5!F26tRG?EJ%&~tzla3yuTa|f zN19K#vf4A0MFC(9+;OWrSuNS@K@ zMx7=fq`9wAUw+3S&z`I+SyAg$lGh}hN*d(dE6Gk(m1IWD4r-H;oJnRKlLmQrlMld# zGRcgn=5h8+ZTH(byUaRv4f5`Gxld7cnGw}I&XOf7;djGp2<4!x|6H9A{5A4`!7dj> zg`Ca(6fQJ*7j!sCz`G#kAQQa{B@IYf2eo?qCZ%w3RR*)X#JWiHrpozXtj#fLHRv3~ zV!4!yhP?aV;)4~SvP50R>AmW{EQ9q#8T~M z`NeQn2`_-antY+4k~9?xY|ojM%4{@Wnxljj4f$^Xqng=vp56|=ZZVIj2 zzB7pKJA<(AXh6zmVDOhLjYed!k&UoO^CrmOgW&+@CUJ?SC;5-_TnUB)5K{+P<~4|t(}G2FQbxqzQl3i;!dWp+8+*IxZimxtk?PPaqi z0Dc!;jnU7H^z7|ku|vpmRsFr~D-uqAo2X_lFK0K{E64VVaXZZY49t_oYz2%haWO+h z`aI$cTrR~g?35~2Qqx*HWIQ|wtLH;*5q_(v1n0zRHnnFpupa!B31;M)C`Q}_7PY1W z!%gR67;7pgs@XX!X~|yIwpX)*Xve!i{}=pL(Jo3^wO+yYRaYpuZB`<-=4Q2Gh>2roEh!-RL60hqvI-v>rJTdN}9IC*~{!N zqS#Aep$ETJv`fc*Ks=N) znAU#)PF@IicOmWA@G)Rz5XSARTQ-(qv0MzB;f>ECSAp5`mh}_iXcuz3cHP`I1Nq;; z#_3zu_aVCvzR`+Gw_J7;NDIi-=@ubtY1QnB4P>5)GU==zjdS5FPNPOI^ixwE@$#QN4Xrz+Ta{TQ|<0Dc)s$N zR9lP?a~k&xj4`b*5LF~`B|zD8mFLrmW*vgR4jn7a={W7>arH1 zsda}fatcS6YSQ8yNqOE{zJBakXiLq#U{o%)DfEp+F#?tr2wDTn#+%r^kO8U#VR;Dc zStDy@*r!Xms8m^6SmD7~Spme6Ak=XrRoA+mVk+=0~gRC*|7-gW3o4a`%ww&#UHx&LG;)-w=K%)^7}nk$qg zL)HkMl%Dq<%>F$(@9N6v_2|Ge>VK1O?_SRTvbn^L?Ej*3@kGZ!S6;8oQ~rwHG~Nv8 zjHY5cL)f|?;k^L$oIV3$dB;GqCp$NpQV$y7o^>)E>PGMgWaEiWP&Wlfq0Acq+`(@Y)O@U_1*y(h)ihk-2%ht9EvlSP4*_V!Bk=>678XKHq9~+ zDD)Icwu$BUWw6hMPr?TFUJAo18; zw|A`cU+Mq4=h`|C9;%n%*gdqjTKelea~!(e1yA^ZhocITcE{>HL;64OxkwZ3Ce%BD z>I)ooyG!&2UBY(b=bb8_^2~K)?WWEow%n&db|C93|-=fKe2)S{scNdlG)kYk?s-M-bisUcta!7i?Ok2rlB#Lj%fD~kWHH|O^U(HP$m{lb&AepD()(V*44W?g>TU; zq+kK+&@g%Vn?Q`KaLPIdk+QQlmT(^rOvY6jek*@yqKp&q_jpRZs5m610*_nd3k)dR^8?W(Tep3PCJpS4+ zKlk7+-gAQSor!2a>y#%Z*GkAvNk=5lyE;@ z%bLU!v1D%)C8rrIBci^z@x`#zmF=c&+KqMhE0FF{5z|jRe-&Uy^&-xTn``XJB8=&# zNF};3RBZ_85Xl=XXs~1^p2-TlM8+tIv}}y5ZE0=dDx+2bOf(ra(=b%9dMMBOc8Vd! zpBfH%&loRE3`Tp<5vWFANB?%wk;a@=bj&Q)B{pq}!B=H9niWpJs&Gx^g)3ttyPy$; zB1X+}g*Lco9@6UgQEkfu0$3SB}Bkd6DVg)SVI?Klz`45%E*aF zcNX_`Asf4?EyfWp7*JSSgNU&xUN6g_8KPbJ7_D{nW-*C!F6rxsiRBtW_x-%?bZ=r_6eDTgn*MZO zM|#J+SWn-)&dyk0-@I6NW5atktydvVXB_QWEX5gkivCQfAVil7SDi#;5KR$s9;(ON znrbp<=%|TaPw8kU9i6Ce@wIw6T4{w)m0|mu0KtI8M3Z4KkD}%*3RrEqTE^1@9cWfP z-;CBNSPxyD!Y#%q)|E-+8QfP3mRU%!^77r$BH@G=Q~P#0BgwV!a(E1Jc(_Vez2Zy> zc53NlGhj9J{4EwZmC>iIzf?Hv=IZ@kXbWcMAc1n1&7q689W9#6h zUZ?pnf^uU#lZXj5u-H*(h(Y#kilb)GN+HCPT|Bn|2XiY7YZ;E$mAS2O@hUbZuD7#$ zr?XF^N1grAm^J)ftKQqR#5&W&;zpS(ba)P6_B2(`o0`_OZd|pp74Py6bVORPq2%o9 zGG+VC^Lw=ioDMt&~e9BxO_lUuO&D*Q`)aCh?JJ~ah>m9uzzs+ZJw1CZj-JuNzY~G%g z6ti!6_d9w+ew+VBjux=_?>V%=fX&-${>ALu^PlfKdP9DjKa!&bZ2nAhd7JHH^Y(P9 zn0?DT%h4P1+k7xb3)p&;|oGZ_nV0*|)q$ z9K9jG%|Di-1#JEehc+0nd3!2Y%)aIQx1%@YxB0hnw1CY|GxrGC{x)y#8x*r|PdI-% zCal7iGB$rKM+?~ehn+Do7_fPJ)xVg1%Nus|hWs}F(Ht#c^M@VUV8G_>t$||pE$=Bu zZ^&=+|CXZ#Z2ozNHW;vZd&{AiecL`(#$HpfW8RK$I}R`o>HN{62f5vez*kg zlz++-28QoA82w#rTqM?!SzA8u3Nc-dAFgaV`u6=i`<)~EJ|1P6j5&?qcpZLx7tZ=` z-+xu>%Wz=a69;Xx6b12zOd40Hwt}5pZ?QN>%Sq38<1gJT7COI-%+FAZUk-l zR^QhDg9ZBb{lNJw5b2}_s{e2c!YSYC-w7Jq#M-y-M+QwnR?e7FzS=zDFn(_RCH^qU zVu{f|ps?J5b!EbRT$Mh7qg&s8m+Pd_pTgjDC97vi|A35J-@eaTQKcmeu;L^9-*5D7 z`v1j=mBw^m+dSce___6u8U15M|GNd{ zn`UuL95nijEhhWDFZ&&^!u~7NKMWlfVfFc?4yFURqs~;=-i7)RI?71^WJR?Mm2>rze=KpBfwK&q*+7%hun1$7iC^KWXZ3^@BEJ;2VGxnO{J+ z`b!Gv)|`cZG5Q5!qRo_lpnzfZELlASX%RQXGdxUl@cyYg73xm{p^!%TIU%jZm&e?x zQ1;wW^dD{1T9toAe}U02Y`>=$YyA~moLtG4Z{dnj%J;9*O2NNUe#+7UOYTjOuhvBnPT)(=ly=+N?y!Jr;5s#3A?{=iKG60 zVfPLB^f98{7j~0W-YdomyUx3rUhIVI`kha&aK2lRPp`x}8+Maa-it4N*>%*-^x{i{ zc74pJ2ZUYs^652L$HH!s%6mnvu%!p_I}^xSs>^Xc5pk4#?mRghxzvqlm@@rtuYq1TT> z4~{~gItu-q5p<5L67dIoASyp`ycVN#dGjDnrkHbot2J#Dc}~Z&NdIz9koa0fVgFvD z=p+003eZ_@xS-r#B|ll58sCmwZl1eQ<#85eo(Ht^&+VYo&Vd3uqxt_SWv5QuTM&m| zQ1n`{rzVVCE;bosr{i2y{ICEM7GGV!IsP270i_ z_}UA4t#&!@crWPZz<+z4!z}OONkg~SLl{p?zfg9n1ixO#WY?$@M&4eJQIETTUjl(z z*e{&-%0Z|9yX?MRS;K>ipa)If4fyU^G5STy{>b@rwW7N%=sdp!$oksrLfeeUEu+YP zeiS;-qv^l>ew1Bz507I11!ITbk#i?67U^RB(hPbH?A!U@Zda}Vo#oo^LRA@KNzemD z`h8Hz=jK&g-+PT6`(3GkvGXA4Y#)1_%xqW0k3cW>oz<6(o&5#<$hWBJr~Mw)SYy8w z6{+z|!s~DChN3|&=#)QLU?-^L#|eJi(4FRj&bZ>|6Pb9v%XAUw^xs|wwBvDuk{|g! z*j~^Bn4c#W__GuAV&A8|&&UVN{Gdz46ZFQu#V!0X==8^4XSD7A@+kB_8M?jBxz`vP zkNq0sgkMB-r)xnk=6@V?wr9}n6Ks4A8ar+q%zqg4V(qq1$yYf~uz%Ai@`IeUqR9S- zS0F<%+=fbKc>xkx+^g$xePvhRhEgUwfNx9k#^vfQ8#hH-TQ+au$9E%Z@~}%*yIApb zq^l?0fhRZArOHTjU-m0wmJKEe9F1N2p;p{(^RR*Kn9PYuz&L$LQV5Jx!}vq#lAZo4!b_541+Dsy=3-y zo^_|w?U$+xoI}s%$t(X{=JK8pfv}sU#<(4Cs<#+ZjCH!(_gjn{{RfMAkF{) literal 26719 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 M&r|3f<*JtdFWxGwi~s-t diff --git a/ch21/pointer_virtual b/ch21/pointer_virtual index e30b16bf7a9b0e94795363d199c61cb1d1e69aed..166657e4edb944d99535bdab2cff847f6606d63e 100755 GIT binary patch literal 22970 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 Vp+&l*>TZMj7HJ_x-v?E${y#R?6u1BY delta 3474 zcmZu!eN0=|6~E8V1{?G7Y@m-9x?mW@uq>H@(ULY5kAlGoB!q-$MynQ6g)H4V@v$Ug zYAejVEkbEhXGg2jY3f={)z+<@nCKrgXbD-81*S+#q)l`FXhy3}BFmJJZmqJetM@zC z?-9?@TQHs&~?C0llcaY+=gLq6kC zi5-mHjAIgiOvl{8nxxkhkxS=L=6@xVk;FgTkz=lH^e1;voA3sNINUQI z&|(7QIC(v_yLW(0mtCyLaBV=5EvfPMe(&0ds=|5r>eBfG2M%m5sp4F5Y93q8L!iBp z>AxNF&q?b03y0ii>k(opy}U$Ip1@>eI`u(`<|^Y{PG4GaAW5Ji)8Q4+MJ~{6W*s>e zUSXFP5b1*wUw9dY@bcMZe@v_teVR_6iMmZ0V-&!4cA}o?I&q;M1LVPAuG;i-pG+UV zn|O}a6_hr<`(HTmf}fs1urmj-DY&D*gU+-#lTHh9me+6PP2_8dzE;rV3Sn<8(XR_O zC>s5_;Gx>3^T}+9Og~+l>Yd(SyBs;b>9#WOSN+Q6U>qK9;cN)_OAEDtgU{Tsta{b z(n77&Uih%bv`~_!3WG|VUN79(_y!`ZqH!x`S%IldK(|7lfF1?E2%Ut!4m|^1My{eq zCm#UX0wmgtwT>S+it-K>=JPgt5WlVXgt3~oqj&sp+BKIj%1veeh|M4_*GzfCiL1sp1If2`=DE4&l)J{#Wh7; ziToEFC)DFk$L?bHY*+DVg_afVhniankw+WppUIaIMG?n^q;QT{oU+87MnW2mv|;XwW9`0)7f)5AmG9&Vt=%w|fMZ_|^- zU6g8%H?*J!9uHqWET+Rm$yzEgkWs=#=N{J^8i77ar$=mWdq$@$V(Xf>(xEpz3gpGl z_D(rWAk5Pu;(UT2dDPya8y%?OSg(28*@@CvN3fv>796#;o{F8ITBbp>yat z3WSrs=B-&d)vQ$Svb^(1>C_v(4#aC_k27X@$1Lxdx`uLrjP9UfM2GI+c$cyd_H5@K>yx8qL|d*Q?5G2DVplh zl@z1qytVU|@ywK}$j2Tsvng3uv2Gf@i`Fre}=QS}$ucEa^R}l+yBxOgrQcCGwT`d#!Kss(1aOwlF4Z)_ztrS#XGdL^RfSib_R12@+d^7WM)hKO1( zAL~epXJu=H+WK_#VbWmVrb@ria-w9mflutBSNqEE)5~wIUS6TAec?$%@TZi;?&U+& zc@(R7daz_lA?o13e5fG9$eS7V7VwJDg&W`HZ0V5!KbwOmvU&S*;)WwKP`L=@OlSgp z07rE+r-KBIsrt~5VfABJ{BB~g&&Dso*MNV~8m|1J!G6*5w~wi8gyJ&zYHSbtJ6vWN z-lw5{UHPXh^XXi_Zd9TRzxeD1t7faxCCgzhCnw>_V~FRZ>_r(th};M4Ja}K$7Uc_& zvjl`A%kO0nY>NvIZ)j58(HK z$BSC<1CB*Ql30#d{<+CL$^MQC!EZDn(7!D&OGByP=W4e63OuhKKX+NCWhulwc%E_G znt*2Uf0X`s8sH_EEw{k)1TI?>2(ppW=clnf`nL6`^1O5ZOY8xEzXke+^e+*yocw*4 zuI|xYM`88TRi(7?HOtR_%Gtwwn?2AwKXwy&<_8ivi!d=~j?f(}UD mD`seF;Ha;)IVAQU8X4dB)c%RhEv?N>WbA!y_IG>ls{aFMtd;oy diff --git a/ch23/reference_virtual b/ch23/reference_virtual new file mode 100755 index 0000000000000000000000000000000000000000..b832569027ef2e6404826d5683fe16c6223e46d0 GIT binary patch literal 10933 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 N$*;$=y~gNf{x9~lWOe`m literal 0 HcmV?d00001 diff --git a/ch23/reference_virtual.cc b/ch23/reference_virtual.cc new file mode 100644 index 0000000..244efb3 --- /dev/null +++ b/ch23/reference_virtual.cc @@ -0,0 +1,57 @@ +#include + +using namespace std; + +class FirstClass { + public: + void print1() { + cout << "FirstClass::print1()" << endl; + } + virtual void print2() { + cout << "FirstClass::print2()" << endl; + } + void print3() { + print1(); + print2(); + cout << endl; + } +}; + +class SecondClass : public FirstClass { + public: + void print1() { + cout << "SecondClass::print1()" << endl; + } + virtual void print2() { + cout << "SecondClass::print2()" << endl; + } +}; + +class ThirdClass : public SecondClass { + public: + void print1() { + cout << "ThirdClass::print1()" << endl; + } + virtual void print2() { + cout << "ThirdClass::print2()" << endl; + } +}; + +int main(int argc, char **argv) { + FirstClass f1; + f1.print1(); + f1.print2(); + f1.print3(); + + SecondClass f2; + f2.print1(); + f2.print2(); + f2.print3(); + + ThirdClass f3; + f3.print1(); + f3.print2(); + f3.print3(); + + return 0; +} diff --git a/ch25/design_pattern.cc b/ch25/design_pattern.cc index 31d7110..91bfc03 100644 --- a/ch25/design_pattern.cc +++ b/ch25/design_pattern.cc @@ -99,7 +99,3 @@ class IntSetList : public IntSet { Node *first; }; - - - -