<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8"><meta name="generator" content="pdf2htmlEX"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/base.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/7410447/raw.css"><script src="https://csdnimg.cn/release/download_crawler_static/js/compatibility.min.js"></script><script src="https://csdnimg.cn/release/download_crawler_static/js/pdf2htmlEX.min.js"></script><script>try{pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});}catch(e){}</script><title></title></head><body><div id="sidebar" style="display: none"><div id="outline"></div></div><div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/7410447/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x2 h2 y2 ff1 fs0 fc0 sc0 ls1 ws0"> <span class="_"> </span> </div><div class="t m0 x2 h2 y3 ff1 fs0 fc0 sc0 ls1 ws0"> </div><div class="t m0 x3 h2 y4 ff1 fs0 fc0 sc0 ls2 ws1">Table of </div><div class="t m0 x3 h2 y5 ff1 fs0 fc0 sc0 ls3 ws0">Content<span class="_ _0"></span>s<span class="ls0"> </span></div><div class="t m0 x4 h2 y6 ff1 fs0 fc1 sc0 ls0 ws0"> </div><div class="t m0 x5 h2 y7 ff2 fs0 fc1 sc0 ls4 ws2">Modern C<span class="_ _0"></span>++ Design: Gene<span class="_ _0"></span>ric Progr<span class="_ _0"></span>amming and Design Patterns Applie<span class="_ _0"></span>d<span class="ff1 ls0 ws0"> </span></div><div class="t m0 x5 h2 y8 ff1 fs0 fc1 sc0 ls5 ws0">By <span class="fc0 ls6 ws3">Andrei Alexandrescu</span></div><div class="t m0 x6 h2 y9 ff1 fs0 fc1 sc0 ls0 ws0"> </div><div class="t m0 x5 h2 ya ff1 fs0 fc1 sc0 ls1 ws0"> <span class="_ _1"> </span> </div><div class="t m0 x7 h2 yb ff1 fs0 fc1 sc0 ls7 ws4">Publi<span class="_ _0"></span>sher<span class="_ _2"></span>: Addison W<span class="_ _0"></span>esley </div><div class="t m0 x7 h2 yc ff1 fs0 fc1 sc0 ls8 ws5">Pub Da<span class="_ _0"></span>te<span class="_ _2"></span>: Februa<span class="_ _0"></span>ry 01, 2001 </div><div class="t m0 x8 h2 yd ff1 fs0 fc1 sc0 ls9 ws6">ISBN<span class="_ _2"></span>: 0-201-<span class="_ _0"></span>70431-5 </div><div class="t m0 x9 h2 ye ff1 fs0 fc1 sc0 lsa ws7">Pages<span class="_ _2"></span>: 352 </div><div class="t m0 xa h2 yf ff1 fs0 fc1 sc0 ls0 ws0"> </div><div class="t m0 xa h3 y10 ff3 fs1 fc1 sc0 lsb ws8">Modern C++ Design<span class="ff4 lsc ws9"> is an import<span class="_ _0"></span>ant book. F<span class="_ _0"></span>undamental<span class="_ _0"></span>ly<span class="_ _0"></span>, it dem<span class="_ _0"></span>onstrates '<span class="_ _0"></span>generic </span></div><div class="t m0 xa h3 y11 ff4 fs1 fc1 sc0 lsd wsa">patterns'<span class="_ _0"></span> or 'pat<span class="_ _0"></span>tern templat<span class="_ _0"></span>es' as a pow<span class="_ _0"></span>erful new way<span class="_ _0"></span> of creating extensi<span class="_ _0"></span>ble designs in </div><div class="t m0 xa h3 y12 ff4 fs1 fc1 sc0 lse wsb">C++--<span class="_ _0"></span>a new way<span class="_ _0"></span> to com<span class="_ _0"></span>bine tem<span class="_ _0"></span>plates and patterns that<span class="_ _0"></span> you m<span class="_ _0"></span>ay<span class="_ _0"></span> never hav<span class="_ _0"></span>e dreamt w<span class="_ _0"></span>as </div><div class="t m0 xa h3 y13 ff4 fs1 fc1 sc0 lsf wsc">possible, but is. I<span class="_ _0"></span>f y<span class="_ _0"></span>our work inv<span class="_ _0"></span>olves C++ desi<span class="_ _0"></span>gn and coding, y<span class="_ _0"></span>ou should read this book. </div><div class="t m0 xa h3 y14 ff4 fs1 fc1 sc0 ls10 wsd">Highly<span class="_ _0"></span> recomm<span class="_ _0"></span>ended.-Herb Sutter </div><div class="t m0 xa h3 y15 ff4 fs1 fc1 sc0 ls11 wse">What'<span class="_ _0"></span>s left to say<span class="_ _0"></span> about C++ that<span class="_ _0"></span> hasn't<span class="_ _0"></span> already<span class="_ _0"></span> been said? P<span class="_ _3"></span>lenty<span class="_ _0"></span>, it turns out<span class="_ _0"></span>.-F<span class="_ _0"></span>rom<span class="_ _0"></span> the </div><div class="t m0 xa h3 y16 ff4 fs1 fc1 sc0 ls12 wsf">Forew<span class="_ _0"></span>ord by John Vlissides </div><div class="t m0 xa h3 y17 ff4 fs1 fc1 sc0 ls13 ws0">In <span class="_ _3"></span><span class="ff3 lsb ws8">Modern C++ Design</span><span class="lse wsb">, Andrei Alexandrescu opens new vistas for C++ program<span class="_ _0"></span>mers. </span></div><div class="t m0 xa h3 y18 ff4 fs1 fc1 sc0 ls14 ws10">Displayi<span class="_ _0"></span>ng extraordinary<span class="_ _0"></span> creativ<span class="_ _0"></span>ity<span class="_ _0"></span> and programm<span class="_ _0"></span>ing vi<span class="_ _0"></span>rtuosity<span class="_ _0"></span>, Alexandrescu offers a </div><div class="t m0 xa h3 y19 ff4 fs1 fc1 sc0 ls10 wsd">cutting-<span class="_ _0"></span>edge approach to design that unit<span class="_ _0"></span>es design patterns, generic program<span class="_ _0"></span>mi<span class="_ _0"></span>ng, and </div><div class="t m0 xa h3 y1a ff4 fs1 fc1 sc0 ls15 ws11">C++, enabling program<span class="_ _0"></span>mers to achiev<span class="_ _0"></span>e expressive, fl<span class="_ _0"></span>exible, and highly<span class="_ _0"></span> reusable code. </div><div class="t m0 xa h3 y1b ff4 fs1 fc1 sc0 ls15 ws11">This book introduces the concept<span class="_ _0"></span> of generic component<span class="_ _0"></span>s-reusable design t<span class="_ _0"></span>emplates t<span class="_ _0"></span>hat </div><div class="t m0 xa h3 y1c ff4 fs1 fc1 sc0 ls15 ws11">produce boilerplate code for com<span class="_ _0"></span>piler consum<span class="_ _0"></span>ption-<span class="_ _0"></span>all wit<span class="_ _0"></span>hin C++. Generic components </div><div class="t m0 xa h3 y1d ff4 fs1 fc1 sc0 ls16 ws12">enable an easier and more seam<span class="_ _0"></span>less transi<span class="_ _0"></span>tion from<span class="_ _0"></span> design to application code, generat<span class="_ _0"></span>e </div><div class="t m0 xa h3 y1e ff4 fs1 fc1 sc0 ls14 ws10">code that better expresses the origi<span class="_ _0"></span>nal design intention, and support<span class="_ _0"></span> the reuse of design </div><div class="t m0 xa h3 y1f ff4 fs1 fc1 sc0 ls16 ws12">structures with m<span class="_ _0"></span>inim<span class="_ _0"></span>al recoding. </div><div class="t m0 xa h3 y20 ff4 fs1 fc1 sc0 lse wsb">The author describes the specific C++ t<span class="_ _0"></span>echniques and features that are used in bui<span class="_ _0"></span>lding </div><div class="t m0 xa h3 y21 ff4 fs1 fc1 sc0 ls16 ws12">generic component<span class="_ _0"></span>s and goes on to impl<span class="_ _0"></span>ement indust<span class="_ _0"></span>rial strength generi<span class="_ _0"></span>c components for </div><div class="t m0 xa h3 y22 ff4 fs1 fc1 sc0 ls17 ws13">real-world applications. Recu<span class="ls14 ws10">rring issues that C++ dev<span class="_ _0"></span>elope<span class="ls18 ws14">rs face in their day<span class="_ _0"></span>-to-<span class="_ _0"></span>day<span class="_ _0"></span> </span></span></div><div class="t m0 xa h3 y23 ff4 fs1 fc1 sc0 ls15 ws11">activi<span class="_ _0"></span>ty<span class="_ _0"></span> are discussed in depth and im<span class="_ _0"></span>plem<span class="_ _0"></span>ented in a generic way<span class="_ _0"></span>. These include:<span class="_ _0"></span> </div><div class="t m0 xb h3 y24 ff5 fs2 fc1 sc0 ls19 ws0">• <span class="_ _4"> </span><span class="ff4 fs1 ls1a ws15">Policy-based design for flexib<span class="_ _3"></span>ility<span class="_ _0"></span> </span></div><div class="t m0 xb h3 y25 ff5 fs2 fc1 sc0 ls19 ws0">• <span class="_ _4"> </span><span class="ff4 fs1 ls1b ws16">Partial template specialization </span></div><div class="t m0 xb h3 y26 ff5 fs2 fc1 sc0 ls19 ws0">• <span class="_ _4"> </span><span class="ff4 fs1 ls15 ws11">Typel<span class="_ _0"></span>ists-<span class="_ _0"></span>powerful ty<span class="_ _0"></span>pe m<span class="_ _0"></span>anipulation st<span class="_ _0"></span>ructures </span></div><div class="t m0 xb h3 y27 ff5 fs2 fc1 sc0 ls19 ws0">• <span class="_ _4"> </span><span class="ff4 fs1 lse wsb">Patterns such as Visitor, Singleton, Com<span class="_ _0"></span>mand, and F<span class="_ _0"></span>actori<span class="_ _0"></span>es </span></div><div class="t m0 xb h3 y28 ff5 fs2 fc1 sc0 ls19 ws0">• <span class="_ _4"> </span><span class="ff4 fs1 ls1c ws17">Multi-m<span class="_ _0"></span>ethod engines </span></div><div class="t m0 xa h3 y29 ff4 fs1 fc1 sc0 ls14 ws10">For each generic com<span class="_ _0"></span>ponent, the book presen<span class="lsb ws8">ts the fundam<span class="_ _0"></span>ental problems and design </span></div><div class="t m0 xa h3 y2a ff4 fs1 fc1 sc0 lse wsb">options, and finally<span class="_ _0"></span> im<span class="_ _0"></span>plem<span class="_ _0"></span>ents a generic solut<span class="_ _0"></span>ion. </div><div class="t m0 xa h3 y2b ff4 fs1 fc1 sc0 ls14 ws10">In addition, an accom<span class="_ _0"></span>panyi<span class="_ _0"></span>ng Web site, <span class="ls1c ws0">http://www.awl.com<span class="_ _0"></span>/cseng/titles/0-201-<span class="_ _0"></span>70431-5, </span></div><div class="t m0 xa h3 y2c ff4 fs1 fc1 sc0 ls10 wsd">makes the code im<span class="_ _0"></span>plem<span class="_ _0"></span>entations av<span class="_ _0"></span>ailable for the generi<span class="_ _0"></span>c components in t<span class="_ _0"></span>he book and </div><div class="t m0 xa h3 y2d ff4 fs1 fc1 sc0 ls11 wse">provides a free, downl<span class="_ _0"></span>oadable C++ library<span class="_ _0"></span>, called L<span class="_ _0"></span>oki, created by<span class="_ _0"></span> the aut<span class="_ _0"></span>hor. Loki<span class="_ _0"></span> </div><div class="t m0 xa h3 y2e ff4 fs1 fc1 sc0 ls18 ws14">provides out-of-<span class="_ _0"></span>the-box functionality<span class="_ _0"></span><span class="ls1c ws17"> for v<span class="_ _0"></span>irtually<span class="_ _0"></span> any C++ project. </span></div><div class="t m0 x4 h4 y2f ff6 fs3 fc2 sc0 ls0 ws0"> </div><div class="c x0 y30 w0 h5"><div class="t m1 xc h6 y31 ff7 fs4 fc3 sc1 ls0 ws0">TEAMFLY</div><div class="t m0 xd h7 y32 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y33 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y34 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y35 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y36 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y37 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y38 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y39 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y3a ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y3b ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y3c ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y3d ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y3e ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y3f ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y40 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y41 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y42 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y43 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y44 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y45 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y46 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y47 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y48 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y49 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y4a ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y4b ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y4c ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y4d ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y4e ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y4f ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y50 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y51 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y52 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y53 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y54 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y55 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y56 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y57 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y58 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y59 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y5a ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y5b ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y5c ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y5d ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y5e ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y5f ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y60 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y61 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y62 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y63 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y64 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y65 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xd h7 y66 ff8 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 xe h8 y67 ff9 fs5 fc4 sc0 ls1d ws0">Team-Fly</div><div class="t m0 xf h9 y68 ff9 fs6 fc4 sc0 ls0 ws0">®</div><div class="t m0 x10 h8 y67 ff9 fs5 fc4 sc0 ls0 ws0"> </div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div></body></html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/7410447/bg2.jpg"><div class="t m0 x4 ha y69 ff4 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 x11 ha y6a ff4 fs5 fc1 sc0 ls1e ws0">ii</div><div class="t m0 x4 hb y6b ff6 fs3 fc2 sc0 ls1f ws18">Table of Content<span class="ffa fs7 ls0 ws0"> </span></div><div class="t m0 x12 ha y6c ffb fs8 fc1 sc0 ls20 ws19">Table of Content<span class="_ _5"> </span><span class="ff4 ls0 ws0">..................................................................................................................<span class="_ _6"> </span>i<span class="fs5"> </span></span></div><div class="t m0 x12 ha y6d ffb fs8 fc1 sc0 ls21 ws0">Copyright<span class="ff4 ls0">.............................................................................................................................<span class="_ _7"> </span>vi<span class="fs5"> </span></span></div><div class="t m0 x12 ha y6e ffb fs8 fc1 sc0 ls22 ws0">Forew<span class="_ _0"></span>ord<span class="_ _3"></span><span class="ff4 ls0">............................................................................................................................<span class="_ _5"> </span>vii<span class="fs5"> </span></span></div><div class="t m0 x12 ha y6f ffb fs8 fc1 sc0 ls22 ws0">Forew<span class="_ _0"></span>ord<span class="_ _3"></span><span class="ff4 ls23">.............................................................................................................................<span class="_ _6"> </span>ix<span class="fs5 ls0"> </span></span></div><div class="t m0 x12 ha y70 ffb fs8 fc1 sc0 ls20 ws0">Preface<span class="_ _8"></span><span class="ff4 ls0">.................................................................................................................................<span class="_ _7"> </span>x<span class="fs5"> </span></span></div><div class="t m0 x13 ha y71 ffb fs8 fc1 sc0 ls24 ws0">Audience<span class="_ _3"></span><span class="ff4 ls0">.........................................................................................................................<span class="_ _6"> </span>xi<span class="fs5"> </span></span></div><div class="t m0 x13 ha y72 ffb fs8 fc1 sc0 ls25 ws0">Loki<span class="_ _8"></span><span class="ff4 ls0">..................................................................................................................................<span class="_ _6"> </span>xi<span class="fs5"> </span></span></div><div class="t m0 x13 ha y73 ffb fs8 fc1 sc0 ls20 ws0">Organization<span class="_ _3"></span><span class="ff4 ls0">..................................................................................................................<span class="_ _5"> </span>xii<span class="fs5"> </span></span></div><div class="t m0 x12 ha y74 ffb fs8 fc1 sc0 ls26 ws0">Acknowledgments<span class="_ _6"> </span><span class="ff4 ls23">...........................................................................................................<span class="_ _2"></span>xiii<span class="fs5 ls0"> </span></span></div><div class="t m0 x4 ha y75 ffb fs8 fc1 sc0 ls21 ws1a">Part I: T<span class="_ _3"></span>echniques<span class="ff4 ls0 ws0">...................................................................................................................<span class="_"> </span>1<span class="fs5"> </span></span></div><div class="t m0 x12 ha y76 ffb fs8 fc1 sc0 ls24 ws1b">Chapter 1. Policy-Based Class Design<span class="_ _2"></span><span class="ff4 ls0 ws0">...........................................................................<span class="_ _7"> </span>2<span class="fs5"> </span></span></div><div class="t m0 x13 ha y77 ffb fs8 fc1 sc0 ls20 ws19">1.1 The Multiplicity of Software Design<span class="_ _9"> </span><span class="ff4 ls0 ws0">......................................................................<span class="_ _7"> </span>2<span class="fs5"> </span></span></div><div class="t m0 x13 ha y78 ffb fs8 fc1 sc0 ls27 ws1c">1.2 The Failure of the Do-It-All Interf<span class="_ _3"></span>ace<span class="_ _5"> </span><span class="ff4 ls0 ws0">....................................................................<span class="_"> </span>3<span class="fs5"> </span></span></div><div class="t m0 x13 ha y79 ffb fs8 fc1 sc0 ls28 ws1d">1.3 Multiple Inheritance to the Rescue?<span class="_ _5"> </span><span class="ff4 ls0 ws0">.....................................................................<span class="_ _7"> </span>4<span class="fs5"> </span></span></div><div class="t m0 x13 ha y7a ffb fs8 fc1 sc0 ls29 ws1e">1.4 The Benefit of Templates<span class="_ _5"> </span><span class="ff4 ls0 ws0">.......................................................................................<span class="_ _7"> </span>5<span class="fs5"> </span></span></div><div class="t m0 x13 ha y7b ffb fs8 fc1 sc0 ls24 ws1b">1.5 Policies and Policy Classes<span class="_ _2"></span><span class="ff4 ls0 ws0">...................................................................................<span class="_"> </span>6<span class="fs5"> </span></span></div><div class="t m0 x13 ha y7c ffb fs8 fc1 sc0 ls20 ws19">1.6 Enriched Policies<span class="_ _2"></span><span class="ff4 ls0 ws0">.....................................................................................................<span class="_"> </span>9<span class="fs5"> </span></span></div><div class="t m0 x13 ha y7d ffb fs8 fc1 sc0 ls2a ws1f">1.<span class="_ _3"></span>7 Dest<span class="_ _3"></span>ru<span class="_ _3"></span>cto<span class="_ _3"></span>rs of<span class="_ _3"></span> Poli<span class="_ _3"></span>cy Cla<span class="_ _3"></span>sse<span class="_ _3"></span>s<span class="_ _8"></span><span class="ff4 ls0 ws0">..............................................................................<span class="_ _6"> </span>10<span class="fs5"> </span></span></div><div class="t m0 x13 ha y7e ffb fs8 fc1 sc0 ls26 ws20">1.8 Optional Functionality Through Incomplete Instantiat<span class="_ _3"></span>ion<span class="_ _2"></span><span class="ff4 ls0 ws0">................................<span class="_ _7"> </span>11<span class="fs5"> </span></span></div><div class="t m0 x13 ha y7f ffb fs8 fc1 sc0 ls2b ws21">1.9 Combining Policy Classes<span class="ff4 ls0 ws0">....................................................................................<span class="_"> </span>12<span class="fs5"> </span></span></div><div class="t m0 x13 ha y80 ffb fs8 fc1 sc0 ls28 ws1d">1.10 Customizing Structure with Policy Classes<span class="_ _2"></span><span class="ff4 ls0 ws0">.....................................................<span class="_ _7"> </span>13<span class="fs5"> </span></span></div><div class="t m0 x13 ha y81 ffb fs8 fc1 sc0 ls2c ws22">1.11 Compatible and Incompatible Policies<span class="_ _2"></span><span class="ff4 ls0 ws0">.............................................................<span class="_ _7"> </span>14<span class="fs5"> </span></span></div><div class="t m0 x13 ha y82 ffb fs8 fc1 sc0 ls20 ws19">1.12 Decomposing a Class into Policies<span class="_ _6"> </span><span class="ff4 ls0 ws0">..................................................................<span class="_ _7"> </span>16<span class="fs5"> </span></span></div><div class="t m0 x13 ha y83 ffb fs8 fc1 sc0 ls20 ws19">1.13 Summary<span class="_ _6"> </span><span class="ff4 ls0 ws0">..............................................................................................................<span class="_"> </span>17<span class="fs5"> </span></span></div><div class="t m0 x12 ha y84 ffb fs8 fc1 sc0 ls28 ws1d">Chapter 2. Techniques<span class="_ _6"> </span><span class="ff4 ls0 ws0">....................................................................................................<span class="_ _7"> </span>19<span class="fs5"> </span></span></div><div class="t m0 x13 ha y85 ffb fs8 fc1 sc0 ls20 ws19">2.1 Compile-Time Assertions<span class="_ _5"></span><span class="ff4 ls0 ws0">.....................................................................................<span class="_ _7"> </span>19<span class="fs5"> </span></span></div><div class="t m0 x13 ha y86 ffb fs8 fc1 sc0 ls2d ws23">2.2 Partial Tem<span class="_ _3"></span>plate Specialization<span class="_ _8"></span><span class="ff4 ls0 ws0">...........................................................................<span class="_"> </span>22<span class="fs5"> </span></span></div><div class="t m0 x13 ha y87 ffb fs8 fc1 sc0 ls2e ws24">2.3 Local Classes<span class="_ _a"></span><span class="ff4 ls0 ws0">.........................................................................................................<span class="_ _7"> </span>23<span class="fs5"> </span></span></div><div class="t m0 x13 ha y88 ffb fs8 fc1 sc0 ls21 ws25">2.4 Mapping Integral Constants to Types<span class="_ _9"> </span><span class="ff4 ls0 ws0">................................................................<span class="_ _7"> </span>24<span class="fs5"> </span></span></div><div class="t m0 x13 ha y89 ffb fs8 fc1 sc0 ls25 ws26">2.5 Type-to-Type Mapping<span class="ff4 ls0 ws0">..........................................................................................<span class="_ _7"> </span>26<span class="fs5"> </span></span></div><div class="t m0 x13 ha y8a ffb fs8 fc1 sc0 ls2f ws27">2.6 Type Select<span class="_ _3"></span>ion<span class="_ _5"> </span><span class="ff4 ls0 ws0">.......................................................................................................<span class="_"> </span>28<span class="fs5"> </span></span></div><div class="t m0 x13 ha y8b ffb fs8 fc1 sc0 ls2c ws22">2.7 Detecting Convertibilit<span class="_ _3"></span>y and Inheritance at Co<span class="_ _0"></span>mpile Time<span class="_ _5"> </span><span class="ff4 ls0 ws0">..............................<span class="_"> </span>29<span class="fs5"> </span></span></div><div class="t m0 x13 ha y8c ffb fs8 fc1 sc0 ls2f ws28">2.8 A <span class="_ _0"></span>W<span class="_ _3"></span>rapper Around <span class="ffc ls24 ws0">type_info<span class="_ _8"></span><span class="ff4 ls0">..........................................................................<span class="_ _7"> </span>32<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha y8d ffb fs8 fc1 sc0 ls25 ws0">2.9 <span class="ffc ls24">NullType</span><span class="ws29"> and </span><span class="ffc ls24">EmptyType<span class="_ _2"></span><span class="ff4 ls0">................................................................................<span class="_"> </span>34<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha y8e ffb fs8 fc1 sc0 ls2b ws2a">2.10 Type Tr<span class="_ _3"></span>aits<span class="_ _7"> </span><span class="ff4 ls0 ws0">...........................................................................................................<span class="_"> </span>34<span class="fs5"> </span></span></div><div class="t m0 x13 ha y8f ffb fs8 fc1 sc0 ls20 ws19">2.11 Summary<span class="_ _6"> </span><span class="ff4 ls0 ws0">..............................................................................................................<span class="_"> </span>40<span class="fs5"> </span></span></div><div class="t m0 x12 ha y90 ffb fs8 fc1 sc0 ls2c ws22">Chapter 3. Typelists<span class="_ _5"> </span><span class="ff4 ls0 ws0">.........................................................................................................<span class="_"> </span>42<span class="fs5"> </span></span></div><div class="t m0 x13 ha y91 ffb fs8 fc1 sc0 ls2c ws2b">3.1 The Need f<span class="_ _3"></span>or Typelists<span class="ff4 ls0 ws0">..........................................................................................<span class="_"> </span>42<span class="fs5"> </span></span></div><div class="t m0 x13 ha y92 ffb fs8 fc1 sc0 ls30 ws2c">3.2 Defining Typelists<span class="_ _6"> </span><span class="ff4 ls0 ws0">..................................................................................................<span class="_ _7"> </span>43<span class="fs5"> </span></span></div><div class="t m0 x13 ha y93 ffb fs8 fc1 sc0 ls2b ws2a">3.3 Linear<span class="_ _3"></span>izing Typelist Creat<span class="_ _3"></span>ion<span class="_ _6"> </span><span class="ff4 ls0 ws0">...............................................................................<span class="_ _7"> </span>45<span class="fs5"> </span></span></div><div class="t m0 x13 ha y94 ffb fs8 fc1 sc0 ls28 ws1d">3.4 Calculating Length<span class="_ _3"></span><span class="ff4 ls0 ws0">.................................................................................................<span class="_ _7"> </span>45<span class="fs5"> </span></span></div><div class="t m0 x13 ha y95 ffb fs8 fc1 sc0 ls25 ws26">3.5 Intermezzo<span class="_ _8"></span><span class="ff4 ls0 ws0">..............................................................................................................<span class="_ _7"> </span>46<span class="fs5"> </span></span></div><div class="t m0 x13 ha y96 ffb fs8 fc1 sc0 ls31 ws2d">3.6 Indexed Access<span class="_ _9"> </span><span class="ff4 ls0 ws0">.....................................................................................................<span class="_ _7"> </span>47<span class="fs5"> </span></span></div><div class="t m0 x13 ha y97 ffb fs8 fc1 sc0 ls26 ws20">3.7 Searching Typelists<span class="_ _a"></span><span class="ff4 ls0 ws0">...............................................................................................<span class="_"> </span>48<span class="fs5"> </span></span></div><div class="t m0 x13 ha y98 ffb fs8 fc1 sc0 ls2b ws2a">3.8 Appending t<span class="_ _3"></span>o Typelists<span class="_ _6"> </span><span class="ff4 ls0 ws0">.........................................................................................<span class="_"> </span>49<span class="fs5"> </span></span></div><div class="t m0 x13 ha y99 ffb fs8 fc1 sc0 ls28 ws2e">3.9 Er<span class="_ _3"></span>asing a Type from a Typelist<span class="_ _3"></span><span class="ff4 ls0 ws0">............................................................................<span class="_ _7"> </span>50<span class="fs5"> </span></span></div><div class="t m0 x13 ha y9a ffb fs8 fc1 sc0 ls28 ws1d">3.10 Erasing Duplicates<span class="_ _5"> </span><span class="ff4 ls0 ws0">..............................................................................................<span class="_"> </span>51<span class="fs5"> </span></span></div><div class="t m0 x13 ha y9b ffb fs8 fc1 sc0 ls28 ws1d">3.11 Replacing an Element in a Typelist<span class="_ _2"></span><span class="ff4 ls0 ws0">..................................................................<span class="_ _7"> </span>52<span class="fs5"> </span></span></div><div class="t m0 x13 ha y9c ffb fs8 fc1 sc0 ls2c ws22">3.12 Partially Order<span class="_ _3"></span>ing Ty<span class="_ _0"></span>pelists<span class="_ _a"></span><span class="ff4 ls0 ws0">................................................................................<span class="_"> </span>53<span class="fs5"> </span></span></div><div class="t m0 x13 ha y9d ffb fs8 fc1 sc0 ls26 ws20">3.13 Class Generation with Typelists<span class="ff4 ls0 ws0">........................................................................<span class="_ _7"> </span>56<span class="fs5"> </span></span></div><div class="t m0 x13 ha y9e ffb fs8 fc1 sc0 ls20 ws19">3.14 Summary<span class="_ _6"> </span><span class="ff4 ls0 ws0">..............................................................................................................<span class="_"> </span>65<span class="fs5"> </span></span></div><div class="t m0 x13 ha y9f ffb fs8 fc1 sc0 ls25 ws0">3.15 <span class="ffc ls24">Typelist</span><span class="ls32 ws2f"> Quick Fa<span class="_ _0"></span>cts<span class="_ _5"></span><span class="ff4 ls0 ws0">......................................................................................<span class="_ _7"> </span>66<span class="fs5"> </span></span></span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/7410447/bg3.jpg"><div class="t m0 x4 ha y69 ff4 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 x14 ha y6a ff4 fs5 fc1 sc0 ls1e ws0">iii</div><div class="t m0 x12 ha ya0 ffb fs8 fc1 sc0 ls33 ws30">Chapter 4. Small-Object Allocation<span class="_ _a"></span><span class="ff4 ls0 ws0">................................................................................<span class="_ _7"> </span>68<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya1 ffb fs8 fc1 sc0 ls27 ws1c">4.1 The Default Free Store Allocator<span class="_ _9"> </span><span class="ff4 ls0 ws0">........................................................................<span class="_"> </span>68<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya2 ffb fs8 fc1 sc0 ls21 ws25">4.2 The <span class="_ _0"></span>W<span class="_ _3"></span>orkings of a Memory Allocator<span class="_ _5"></span><span class="ff4 ls0 ws0">.................................................................<span class="_ _7"> </span>69<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya3 ffb fs8 fc1 sc0 ls34 ws31">4.3 A Small-Object Allocat<span class="_ _3"></span>or<span class="_ _7"> </span><span class="ff4 ls0 ws0">......................................................................................<span class="_ _7"> </span>70<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya4 ffb fs8 fc1 sc0 ls25 ws0">4.4 <span class="ffc ls24">Chunks<span class="_ _6"> </span><span class="ff4 ls0">...................................................................................................................<span class="_ _7"> </span>71<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha ya5 ffb fs8 fc1 sc0 ls2b ws21">4.5 The Fixed-Size Allocato<span class="_ _3"></span>r<span class="_ _5"></span><span class="ff4 ls0 ws0">......................................................................................<span class="_ _7"> </span>74<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya6 ffb fs8 fc1 sc0 ls25 ws26">4.6 The <span class="ffc ls24 ws0">SmallObjAllocator<span class="ffb ws1b"> Class<span class="_ _8"></span></span><span class="ff4 ls0">......................................................................<span class="_"> </span>77<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha ya7 ffb fs8 fc1 sc0 ls29 ws1e">4.7 A Hat Trick<span class="_ _8"></span><span class="ff4 ls0 ws0">..............................................................................................................<span class="_ _7"> </span>79<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya8 ffb fs8 fc1 sc0 ls29 ws1e">4.8 Simple, Com<span class="_ _3"></span>plicated, Yet Simple in the End<span class="ff4 ls0 ws0">.....................................................<span class="_ _6"> </span>81<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya9 ffb fs8 fc1 sc0 ls26 ws20">4.9 Administrivia<span class="_ _2"></span><span class="ff4 ls0 ws0">...........................................................................................................<span class="_ _7"> </span>82<span class="fs5"> </span></span></div><div class="t m0 x13 ha yaa ffb fs8 fc1 sc0 ls20 ws19">4.10 Summary<span class="_ _6"> </span><span class="ff4 ls0 ws0">..............................................................................................................<span class="_"> </span>83<span class="fs5"> </span></span></div><div class="t m0 x13 ha yab ffb fs8 fc1 sc0 ls35 ws32">4.11 Small-Object Allocator<span class="_ _0"></span> Quick Facts<span class="_ _3"></span><span class="ff4 ls0 ws0">..................................................................<span class="_ _7"> </span>83<span class="fs5"> </span></span></div><div class="t m0 x4 ha yac ffb fs8 fc1 sc0 ls2d ws33">Part I<span class="_ _3"></span>I: Components<span class="ff4 ls0 ws0">..............................................................................................................<span class="_ _7"> </span>85<span class="fs5"> </span></span></div><div class="t m0 x12 ha yad ffb fs8 fc1 sc0 ls28 ws1d">Chapter 5. Generalized Functors<span class="_ _a"></span><span class="ff4 ls0 ws0">...................................................................................<span class="_ _7"> </span>86<span class="fs5"> </span></span></div><div class="t m0 x13 ha yae ffb fs8 fc1 sc0 ls2e ws24">5.1 The Command Design Pattern<span class="_ _3"></span><span class="ff4 ls0 ws0">............................................................................<span class="_"> </span>86<span class="fs5"> </span></span></div><div class="t m0 x13 ha yaf ffb fs8 fc1 sc0 ls2c ws22">5.2 Command in the Real <span class="_ _0"></span>W<span class="_ _3"></span>orld<span class="ff4 ls0 ws0">................................................................................<span class="_ _7"> </span>89<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb0 ffb fs8 fc1 sc0 ls24 ws1b">5.3 C++ Callable Entities<span class="_ _7"> </span><span class="ff4 ls0 ws0">............................................................................................<span class="_ _7"> </span>89<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb1 ffb fs8 fc1 sc0 ls25 ws26">5.4 The <span class="ffc ls24 ws0">Functor</span><span class="ls20 ws19"> Class Template Sk<span class="_ _3"></span>eleton<span class="_ _7"> </span><span class="ff4 ls0 ws0">...........................................................<span class="_ _7"> </span>91<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha yb2 ffb fs8 fc1 sc0 ls20 ws34">5.5 Implement<span class="_ _3"></span>ing the Forwarding <span class="ffc ls24 ws0">Functor::operator()<span class="_ _9"> </span><span class="ff4 ls0">...............................<span class="_ _7"> </span>95<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha yb3 ffb fs8 fc1 sc0 ls20 ws19">5.6 Handling Functors<span class="_ _6"> </span><span class="ff4 ls0 ws0">.................................................................................................<span class="_ _7"> </span>96<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb4 ffb fs8 fc1 sc0 ls36 ws0">5.7 Bu<span class="_ _0"></span>ild<span class="_ _0"></span> One<span class="_ _0"></span>, Ge<span class="_ _0"></span>t On<span class="_ _0"></span>e <span class="_ _0"></span>Free<span class="ff4 ls0">......................................................................................<span class="_ _6"> </span>98<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb5 ffb fs8 fc1 sc0 ls20 ws19">5.8 Argument and Return Type Conv<span class="_ _0"></span>ersions<span class="_ _6"> </span><span class="ff4 ls0 ws0">..........................................................<span class="_"> </span>99<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb6 ffb fs8 fc1 sc0 ls28 ws1d">5.9 Handling Pointers to Member Functions<span class="ff4 ls0 ws0">..........................................................<span class="_"> </span>101<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb7 ffb fs8 fc1 sc0 ls28 ws1d">5.10 Binding<span class="_ _5"></span><span class="ff4 ls0 ws0">................................................................................................................<span class="_ _7"> </span>104<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb8 ffb fs8 fc1 sc0 ls28 ws1d">5.11 Chaining Requests<span class="_ _3"></span><span class="ff4 ls0 ws0">............................................................................................<span class="_"> </span>106<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb9 ffb fs8 fc1 sc0 ls28 ws1d">5.12 Real-World Issues I: The Cost of Forwarding Functions<span class="_ _6"> </span><span class="ff4 ls0 ws0">............................<span class="_"> </span>107<span class="fs5"> </span></span></div><div class="t m0 x13 ha yba ffb fs8 fc1 sc0 ls33 ws30">5.13 Real-World Issues II: Heap Allocation<span class="_ _7"> </span><span class="ff4 ls0 ws0">...........................................................<span class="_"> </span>108<span class="fs5"> </span></span></div><div class="t m0 x13 ha ybb ffb fs8 fc1 sc0 ls20 ws19">5.14 Implementing Undo and Redo with <span class="ffc ls24 ws0">Functor<span class="_ _6"> </span><span class="ff4 ls0">..............................................<span class="_"> </span>110<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha ybc ffb fs8 fc1 sc0 ls20 ws19">5.15 Summary<span class="_ _6"> </span><span class="ff4 ls0 ws0">............................................................................................................<span class="_"> </span>110<span class="fs5"> </span></span></div><div class="t m0 x13 ha ybd ffb fs8 fc1 sc0 ls25 ws0">5.16 <span class="ffc ls24">Functor</span><span class="ls37 ws35"> Quick Facts<span class="_ _0"></span><span class="ff4 ls0 ws0">.......................................................................................<span class="_ _7"> </span>111<span class="fs5"> </span></span></span></div><div class="t m0 x12 ha ybe ffb fs8 fc1 sc0 ls33 ws30">Chapter 6. Implement<span class="_ _3"></span>ing Singletons<span class="_ _5"> </span><span class="ff4 ls0 ws0">...........................................................................<span class="_"> </span>113<span class="fs5"> </span></span></div><div class="t m0 x13 ha ybf ffb fs8 fc1 sc0 ls24 ws1b">6.1 Static Data + Static Functions != Singleton<span class="_ _8"></span><span class="ff4 ls0 ws0">.....................................................<span class="_ _7"> </span>113<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc0 ffb fs8 fc1 sc0 ls26 ws20">6.2 The Basic C++ Idioms Supporting Singletons<span class="_ _6"> </span><span class="ff4 ls0 ws0">................................................<span class="_ _7"> </span>114<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc1 ffb fs8 fc1 sc0 ls28 ws1d">6.3 Enforcing the Singleton's Uniqueness<span class="_ _9"> </span><span class="ff4 ls0 ws0">.............................................................<span class="_"> </span>116<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc2 ffb fs8 fc1 sc0 ls2b ws21">6.4 Destroying the Singleton<span class="_ _6"> </span><span class="ff4 ls0 ws0">....................................................................................<span class="_ _7"> </span>116<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc3 ffb fs8 fc1 sc0 ls28 ws1d">6.5 The Dead Reference Problem<span class="_ _3"></span><span class="ff4 ls0 ws0">...........................................................................<span class="_ _7"> </span>118<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc4 ffb fs8 fc1 sc0 ls2c ws22">6.6 Addressing the Dead Reference Problem (I): The Phoenix Singleton<span class="_ _a"></span><span class="ff4 ls0 ws0">........<span class="_ _7"> </span>120<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc5 ffb fs8 fc1 sc0 ls28 ws1d">6.7 Addressing the Dead Reference Problem (II): Singletons with Longevity<span class="_ _a"></span><span class="ff4 ls0 ws0">..<span class="_ _7"> </span>122<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc6 ffb fs8 fc1 sc0 ls2c ws22">6.8 Implementing Singletons with Long<span class="_ _3"></span>evity<span class="ff4 ls0 ws0">..........................................................<span class="_ _7"> </span>125<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc7 ffb fs8 fc1 sc0 ls21 ws25">6.9 Living in a Multithreaded World<span class="_ _8"></span><span class="ff4 ls0 ws0">.........................................................................<span class="_ _7"> </span>128<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc8 ffb fs8 fc1 sc0 ls30 ws2c">6.10 Putting It All Together<span class="_ _5"></span><span class="ff4 ls0 ws0">.......................................................................................<span class="_ _7"> </span>130<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc9 ffb fs8 fc1 sc0 ls2c ws36">6.11 W<span class="_ _3"></span>orking <span class="_ _3"></span>with <span class="_ _3"></span><span class="ffc ls24 ws0">SingletonHolder<span class="_ _3"></span><span class="ff4 ls0">..................................................................<span class="_ _7"> </span>134<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha yca ffb fs8 fc1 sc0 ls20 ws19">6.12 Summary<span class="_ _6"> </span><span class="ff4 ls0 ws0">............................................................................................................<span class="_"> </span>136<span class="fs5"> </span></span></div><div class="t m0 x13 ha ycb ffb fs8 fc1 sc0 ls25 ws0">6.13 <span class="ffc ls24">SingletonHolder</span><span class="ls2c ws2b"> Class T<span class="_ _3"></span>emplate Quick Fact<span class="_ _3"></span>s</span><span class="ff4 ls0">.......................................<span class="_ _7"> </span>136<span class="fs5"> </span></span></div><div class="t m0 x12 ha ycc ffb fs8 fc1 sc0 ls33 ws30">Chapter 7. Smart Pointers<span class="ff4 ls0 ws0">.............................................................................................<span class="_"> </span>138<span class="fs5"> </span></span></div><div class="t m0 x13 ha ycd ffb fs8 fc1 sc0 ls26 ws20">7.1 Smart Pointers 101<span class="_ _9"> </span><span class="ff4 ls0 ws0">.............................................................................................<span class="_ _7"> </span>138<span class="fs5"> </span></span></div><div class="t m0 x13 ha yce ffb fs8 fc1 sc0 ls26 ws37">7.2 The Deal<span class="_ _9"> </span><span class="ff4 ls0 ws0">...............................................................................................................<span class="_ _7"> </span>139<span class="fs5"> </span></span></div><div class="t m0 x13 ha ycf ffb fs8 fc1 sc0 ls38 ws38">7.<span class="_ _3"></span>3 St<span class="_ _3"></span>orag<span class="_ _3"></span>e of<span class="_ _3"></span> Sm<span class="_ _3"></span>art P<span class="_ _3"></span>oin<span class="_ _3"></span>ter<span class="_ _3"></span>s<span class="_ _a"></span><span class="ff4 ls0 ws0">..................................................................................<span class="_ _7"> </span>140<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd0 ffb fs8 fc1 sc0 ls2f ws28">7.4 Smart Pointer Member Functions<span class="_ _2"></span><span class="ff4 ls0 ws0">.....................................................................<span class="_"> </span>142<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd1 ffb fs8 fc1 sc0 ls24 ws39">7.5 Ownership-Handling St<span class="_ _3"></span>rategies<span class="_ _7"> </span><span class="ff4 ls0 ws0">........................................................................<span class="_"> </span>143<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd2 ffb fs8 fc1 sc0 ls2f ws27">7.6 The Addr<span class="_ _3"></span>ess-of Operator<span class="ff4 ls0 ws0">....................................................................................<span class="_ _7"> </span>150<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd3 ffb fs8 fc1 sc0 ls21 ws25">7.7 Implicit Conversion to Raw Pointer Types<span class="_ _a"></span><span class="ff4 ls0 ws0">.......................................................<span class="_ _7"> </span>151<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd4 ffb fs8 fc1 sc0 ls2b ws21">7.8 Equality and Inequality<span class="ff4 ls0 ws0">........................................................................................<span class="_ _7"> </span>153<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd5 ffb fs8 fc1 sc0 ls2f ws27">7.9 Ordering <span class="_ _3"></span>Comparisons<span class="ff4 ls0 ws0">........................................................................................<span class="_ _6"> </span>157<span class="fs5"> </span></span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/7410447/bg4.jpg"><div class="t m0 x4 ha y69 ff4 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 x14 ha y6a ff4 fs5 fc1 sc0 ls1e ws0">iv</div><div class="t m0 x13 ha ya0 ffb fs8 fc1 sc0 ls24 ws1b">7.10 Checking and Error Reporting<span class="_ _3"></span><span class="ff4 ls0 ws0">.........................................................................<span class="_ _7"> </span>159<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd6 ffb fs8 fc1 sc0 ls21 ws25">7.11 Smart Pointers to <span class="ffc ls24 ws0">const</span><span class="ls25 ws29"> and <span class="ffc ls24 ws0">const</span><span class="ls39 ws3a"> Smart Pointers<span class="_ _6"> </span><span class="ff4 ls0 ws0">.................................<span class="_ _7"> </span>161<span class="fs5"> </span></span></span></span></div><div class="t m0 x13 ha yd7 ffb fs8 fc1 sc0 ls20 ws19">7.12 Arrays<span class="_ _8"></span><span class="ff4 ls0 ws0">..................................................................................................................<span class="_ _7"> </span>161<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd8 ffb fs8 fc1 sc0 ls2c ws22">7.13 Smart Pointers and M<span class="_ _0"></span>ultit<span class="_ _3"></span>hreading<span class="_ _5"> </span><span class="ff4 ls0 ws0">.................................................................<span class="_ _7"> </span>162<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd9 ffb fs8 fc1 sc0 ls30 ws2c">7.14 Putting It All Together<span class="_ _5"></span><span class="ff4 ls0 ws0">.......................................................................................<span class="_ _7"> </span>165<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya5 ffb fs8 fc1 sc0 ls20 ws19">7.15 Summary<span class="_ _6"> </span><span class="ff4 ls0 ws0">............................................................................................................<span class="_"> </span>171<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya6 ffb fs8 fc1 sc0 ls25 ws0">7.16 <span class="ffc ls24">SmartPtr</span><span class="ls32 ws2f"> Quick Fa<span class="_ _0"></span>cts<span class="_ _5"></span><span class="ff4 ls0 ws0">....................................................................................<span class="_ _7"> </span>171<span class="fs5"> </span></span></span></div><div class="t m0 x12 ha ya7 ffb fs8 fc1 sc0 ls21 ws25">Chapter 8. Object Factories<span class="_ _8"></span><span class="ff4 ls0 ws0">..........................................................................................<span class="_ _7"> </span>173<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya8 ffb fs8 fc1 sc0 ls26 ws37">8.1 The Need f<span class="_ _3"></span>or Object Factories<span class="_ _6"> </span><span class="ff4 ls0 ws0">..........................................................................<span class="_ _7"> </span>174<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya9 ffb fs8 fc1 sc0 ls0 ws3b">8.2 Object<span class="_ _0"></span> Factories in C<span class="_ _0"></span>++: Classes and <span class="_ _0"></span>Objects<span class="_ _a"></span><span class="ff4 ws0">...............................................<span class="_"> </span>175<span class="fs5"> </span></span></div><div class="t m0 x13 ha yaa ffb fs8 fc1 sc0 ls20 ws34">8.3 Implement<span class="_ _3"></span>ing an Object Factor<span class="_ _3"></span>y<span class="_ _2"></span><span class="ff4 ls0 ws0">.......................................................................<span class="_ _7"> </span>176<span class="fs5"> </span></span></div><div class="t m0 x13 ha yab ffb fs8 fc1 sc0 ls25 ws26">8.4 Type I<span class="_ _3"></span>denti<span class="_ _0"></span>fiers<span class="_ _7"> </span><span class="ff4 ls0 ws0">....................................................................................................<span class="_ _7"> </span>180<span class="fs5"> </span></span></div><div class="t m0 x13 ha yac ffb fs8 fc1 sc0 ls21 ws1a">8.5 Generalization<span class="_ _2"></span><span class="ff4 ls0 ws0">......................................................................................................<span class="_ _7"> </span>181<span class="fs5"> </span></span></div><div class="t m0 x13 ha yad ffb fs8 fc1 sc0 ls2f ws28">8.6 Minutiae<span class="ff4 ls0 ws0">.................................................................................................................<span class="_ _7"> </span>184<span class="fs5"> </span></span></div><div class="t m0 x13 ha yae ffb fs8 fc1 sc0 ls20 ws19">8.7 Clone Factories<span class="_ _3"></span><span class="ff4 ls0 ws0">....................................................................................................<span class="_"> </span>185<span class="fs5"> </span></span></div><div class="t m0 x13 ha yaf ffb fs8 fc1 sc0 ls2f ws28">8.8 Using Object Factories wi<span class="_ _0"></span>th Other Generic Components<span class="_ _6"> </span><span class="ff4 ls0 ws0">.............................<span class="_ _7"> </span>188<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb0 ffb fs8 fc1 sc0 ls22 ws3c">8.9 Su<span class="_ _0"></span>mma<span class="_ _0"></span>ry<span class="ff4 ls0 ws0">...............................................................................................................<span class="_ _7"> </span>189<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb1 ffb fs8 fc1 sc0 ls25 ws0">8.10 <span class="ffc ls24">Factory</span><span class="ls35 ws3d"> Class T<span class="_ _3"></span>emplate Quic<span class="_ _0"></span>k Facts<span class="_ _3"></span><span class="ff4 ls0 ws0">..........................................................<span class="_ _7"> </span>189<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha yb2 ffb fs8 fc1 sc0 ls25 ws0">8.11 <span class="ffc ls24">CloneFactory</span><span class="ls33 ws3e"> <span class="_ _3"></span>Class Template Quick <span class="_ _3"></span>Facts<span class="_ _3"></span></span><span class="ff4 ls0">..............................................<span class="_"> </span>190<span class="fs5"> </span></span></div><div class="t m0 x12 ha yb3 ffb fs8 fc1 sc0 ls20 ws19">Chapter 9. Abstract Factory<span class="_ _8"></span><span class="ff4 ls0 ws0">..........................................................................................<span class="_ _7"> </span>191<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb4 ffb fs8 fc1 sc0 ls2b ws21">9.1 The Architectural Role of Abstract Factory<span class="_ _3"></span><span class="ff4 ls0 ws0">......................................................<span class="_ _7"> </span>191<span class="fs5"> </span></span></div><div class="t m0 x13 ha yb5 ffb fs8 fc1 sc0 ls3a ws3f">9.2 A Generic Abstract Factory Interface<span class="_ _2"></span><span class="ff4 ls0 ws0">...............................................................<span class="_ _7"> </span>193<span class="fs5"> </span></span></div><div class="t m0 x13 ha yda ffb fs8 fc1 sc0 ls21 ws1a">9.3 Implement<span class="_ _3"></span>ing <span class="ffc ls24 ws0">AbstractFactory<span class="_ _3"></span><span class="ff4 ls0">...................................................................<span class="_"> </span>196<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha ydb ffb fs8 fc1 sc0 ls25 ws29">9.4 A Prototype-Based Abstract Factory<span class="_ _0"></span> Implementation<span class="_ _3"></span><span class="ff4 ls0 ws0">....................................<span class="_ _7"> </span>199<span class="fs5"> </span></span></div><div class="t m0 x13 ha ydc ffb fs8 fc1 sc0 ls22 ws3c">9.5 Su<span class="_ _0"></span>mma<span class="_ _0"></span>ry<span class="ff4 ls0 ws0">...............................................................................................................<span class="_ _7"> </span>202<span class="fs5"> </span></span></div><div class="t m0 x13 ha ydd ffb fs8 fc1 sc0 ls25 ws0">9.6 <span class="ffc ls24">AbstractFactory</span><span class="ls2c ws2b"> and <span class="_ _3"></span></span><span class="ffc ls24">ConcreteFactory</span><span class="ls3b ws40"> Quick Facts<span class="_ _3"></span></span><span class="ff4 ls0">.........................<span class="_"> </span>203<span class="fs5"> </span></span></div><div class="t m0 x12 ha yde ffb fs8 fc1 sc0 ls28 ws1d">Chapter 10. Visitor<span class="_ _3"></span><span class="ff4 ls0 ws0">..........................................................................................................<span class="_ _7"> </span>205<span class="fs5"> </span></span></div><div class="t m0 x13 ha ydf ffb fs8 fc1 sc0 ls3c ws41">10.1 Visitor Basics<span class="_ _7"> </span><span class="ff4 ls0 ws0">.....................................................................................................<span class="_"> </span>205<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye0 ffb fs8 fc1 sc0 ls20 ws19">10.2 Overloading and the Catch-All Function<span class="_ _a"></span><span class="ff4 ls0 ws0">........................................................<span class="_"> </span>210<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye1 ffb fs8 fc1 sc0 ls2b ws21">10.3 An Implementation Ref<span class="_ _3"></span>inement: The Acyclic Visitor<span class="_ _a"></span><span class="ff4 ls0 ws0">....................................<span class="_"> </span>211<span class="fs5"> </span></span></div><div class="t m0 x13 ha ybe ffb fs8 fc1 sc0 ls26 ws20">10.4 A Generic Implementation of Visitor<span class="_ _3"></span><span class="ff4 ls0 ws0">...............................................................<span class="_ _7"> </span>215<span class="fs5"> </span></span></div><div class="t m0 x13 ha ybf ffb fs8 fc1 sc0 ls3d ws42">10.5 B<span class="_ _0"></span>ack to<span class="_ _0"></span> the<span class="_ _0"></span> "Cy<span class="_ _0"></span>cli<span class="_ _0"></span>c" V<span class="_ _0"></span>isito<span class="_ _0"></span>r<span class="_ _3"></span><span class="ff4 ls0 ws0">...............................................................................<span class="_"> </span>221<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc0 ffb fs8 fc1 sc0 ls2b ws21">10.6 Hooking Variations<span class="_ _2"></span><span class="ff4 ls0 ws0">............................................................................................<span class="_ _7"> </span>223<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc1 ffb fs8 fc1 sc0 ls20 ws19">10.7 Summary<span class="_ _6"> </span><span class="ff4 ls0 ws0">............................................................................................................<span class="_"> </span>226<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc2 ffb fs8 fc1 sc0 ls28 ws1d">10.8 Visitor Generic Components Quick Facts<span class="_ _7"> </span><span class="ff4 ls0 ws0">.....................................................<span class="_ _7"> </span>226<span class="fs5"> </span></span></div><div class="t m0 x12 ha yc3 ffb fs8 fc1 sc0 ls21 ws25">Chapter 11. Multimethods<span class="_ _2"></span><span class="ff4 ls0 ws0">.............................................................................................<span class="_ _7"> </span>228<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc4 ffb fs8 fc1 sc0 ls2b ws21">11.1 <span class="_ _0"></span>W<span class="_ _3"></span>hat Are Multimethods?<span class="_ _a"></span><span class="ff4 ls0 ws0">..................................................................................<span class="_ _7"> </span>228<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc5 ffb fs8 fc1 sc0 ls21 ws25">11.2 <span class="_ _0"></span>W<span class="_ _3"></span>hen Are Multimethods Needed?<span class="ff4 ls0 ws0">..................................................................<span class="_ _7"> </span>229<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc6 ffb fs8 fc1 sc0 ls20 ws19">11.3 Double Switch-on-Type: Brute Force<span class="_ _8"></span><span class="ff4 ls0 ws0">.............................................................<span class="_"> </span>230<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc7 ffb fs8 fc1 sc0 ls24 ws1b">11.4 The Brute-Force Approach Automated<span class="_ _a"></span><span class="ff4 ls0 ws0">..........................................................<span class="_ _7"> </span>232<span class="fs5"> </span></span></div><div class="t m0 x13 ha yc8 ffb fs8 fc1 sc0 ls24 ws1b">11.5 Symmetry with the Brute-Force Dispatcher<span class="_ _6"> </span><span class="ff4 ls0 ws0">..................................................<span class="_ _7"> </span>237<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye2 ffb fs8 fc1 sc0 ls2f ws28">11.6 The Logarithmic Double Dispatcher<span class="_ _8"></span><span class="ff4 ls0 ws0">...............................................................<span class="_ _7"> </span>240<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye3 ffb fs8 fc1 sc0 ls25 ws0">11.7 <span class="ffc ls24">FnDispatcher</span><span class="ls38 ws38"> and<span class="_ _3"></span> Symm<span class="_ _3"></span>et<span class="_ _3"></span>ry<span class="_ _8"></span></span><span class="ff4 ls0">......................................................................<span class="_"> </span>245<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye4 ffb fs8 fc1 sc0 ls24 ws1b">11.8 Double Dispatch to Functors<span class="_ _2"></span><span class="ff4 ls0 ws0">...........................................................................<span class="_"> </span>246<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye5 ffb fs8 fc1 sc0 ls26 ws20">11.9 Converting Arguments: <span class="ffc ls24 ws0">static_cast</span><span class="ls38 ws38"> or<span class="_ _3"></span> <span class="ffc ls24 ws0">dynamic_cast<span class="ffb ls0">?<span class="ff4">.....................<span class="_ _6"> </span>248<span class="fs5"> </span></span></span></span></span></div><div class="t m0 x13 ha ycd ffb fs8 fc1 sc0 ls2c ws22">11.10 Constant-Time Multimet<span class="_ _3"></span>hods: Raw Speed<span class="_ _6"> </span><span class="ff4 ls0 ws0">.................................................<span class="_"> </span>252<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye6 ffb fs8 fc1 sc0 ls25 ws0">11.11 <span class="ffc ls24">BasicDispatcher</span><span class="ws29"> and </span><span class="ffc ls24">BasicFastDispatcher</span><span class="ls21 ws25"> as Policies<span class="_ _a"></span></span><span class="ff4 ls0">.............<span class="_"> </span>255<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye7 ffb fs8 fc1 sc0 ls25 ws29">11.12 Looking Forward<span class="_ _7"> </span><span class="ff4 ls0 ws0">.............................................................................................<span class="_"> </span>257<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye8 ffb fs8 fc1 sc0 ls24 ws1b">11.13 Summary<span class="_ _5"></span><span class="ff4 ls0 ws0">..........................................................................................................<span class="_ _7"> </span>258<span class="fs5"> </span></span></div><div class="t m0 x13 ha ye9 ffb fs8 fc1 sc0 ls24 ws1b">11.14 Double Dispatcher Quick Facts<span class="_ _5"> </span><span class="ff4 ls0 ws0">....................................................................<span class="_"> </span>259<span class="fs5"> </span></span></div><div class="t m0 x12 ha yea ffb fs8 fc1 sc0 ls27 ws1c">Appendix A. A Minimalist Multithreading<span class="_ _3"></span> Library<span class="_ _2"></span><span class="ff4 ls0 ws0">.......................................................<span class="_"> </span>262<span class="fs5"> </span></span></div><div class="t m0 x13 ha yeb ffb fs8 fc1 sc0 ls34 ws31">A.1 A Critiq<span class="_ _3"></span>ue o<span class="_ _0"></span>f Multithreading<span class="_ _5"> </span><span class="ff4 ls0 ws0">...............................................................................<span class="_"> </span>262<span class="fs5"> </span></span></div><div class="t m0 x13 ha yec ffb fs8 fc1 sc0 ls24 ws1b">A.2 Loki's Approach<span class="_ _8"></span><span class="ff4 ls0 ws0">...................................................................................................<span class="_ _7"> </span>263<span class="fs5"> </span></span></div><div class="t m0 x13 ha yed ffb fs8 fc1 sc0 ls2c ws22">A.3 Atomic Operations on Integral Types<span class="_ _9"> </span><span class="ff4 ls0 ws0">..............................................................<span class="_ _7"> </span>264<span class="fs5"> </span></span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/7410447/bg5.jpg"><div class="t m0 x4 ha y69 ff4 fs5 fc1 sc0 ls0 ws0"> </div><div class="t m0 x11 ha y6a ff4 fs5 fc1 sc0 ls0 ws0">v</div><div class="t m0 x13 ha ya0 ffb fs8 fc1 sc0 ls33 ws30">A.4 Mutexes<span class="_ _5"></span><span class="ff4 ls0 ws0">................................................................................................................<span class="_ _7"> </span>265<span class="fs5"> </span></span></div><div class="t m0 x13 ha ya1 ffb fs8 fc1 sc0 ls24 ws1b">A.5 Locking Semantics in Object-Oriented Programming<span class="_ _6"> </span><span class="ff4 ls0 ws0">...................................<span class="_ _7"> </span>267<span class="fs5"> </span></span></div><div class="t m0 x13 ha yee ffb fs8 fc1 sc0 ls2c ws2b">A.6 Opt<span class="_ _3"></span>ional <span class="ffc ls24 ws0">volatile</span><span class="ls3e ws43"> Mod<span class="_ _3"></span>i<span class="_ _3"></span>f<span class="_ _3"></span>ie<span class="_ _3"></span>r<span class="_ _a"></span><span class="ff4 ls0 ws0">.............................................................................<span class="_"> </span>269<span class="fs5"> </span></span></span></div><div class="t m0 x13 ha yd8 ffb fs8 fc1 sc0 ls2b ws21">A.7 Semaphores, Events, and Other Good Things<span class="_ _6"> </span><span class="ff4 ls0 ws0">..............................................<span class="_"> </span>269<span class="fs5"> </span></span></div><div class="t m0 x13 ha yd9 ffb fs8 fc1 sc0 ls3f ws44">A.8 Summary<span class="_ _5"> </span><span class="ff4 ls0 ws0">..............................................................................................................<span class="_ _7"> </span>269<span class="fs5"> </span></span></div><div class="t m0 x12 ha ya5 ffb fs8 fc1 sc0 ls33 ws0">Bibliography<span class="_ _a"></span><span class="ff4 ls0">.....................................................................................................................<span class="_ _7"> </span>270<span class="fs5"> </span></span></div><div class="t m0 x4 ha yef ff4 fs5 fc1 sc0 ls0 ws0"> </div><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>