⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eiack.htm

📁 一个非常适合初学者入门的有关c++的文档
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" "http://www.w3.org/TR/REC-html40/frameset.dtd">
<HTML LANG="EN">
<HEAD>
<title>Effective C++, 2E | Acknowledgements</TITLE>
<LINK REL=STYLESHEET HREF=../INTRO/ECMEC.CSS>

<SCRIPT LANGUAGE="Javascript" SRC="../JAVA/COOKIE.JS"></SCRIPT>
<SCRIPT LANGUAGE="Javascript">var imagemax = 0; setCurrentMax(0);</SCRIPT>
<SCRIPT LANGUAGE="Javascript" SRC="../JAVA/DINGBATS.JS"></SCRIPT>
<SCRIPT>
var dingbase = "EIACKDIR.HTM";
var dingtext = "EC++ Acknowl, P";
if (self == top) {
 top.location.replace(dingbase + this.location.hash);
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" ONLOAD="setResize()">
<!-- SectionName="EC++ Acknowledgments" -->
<DIV ALIGN="CENTER"><FONT SIZE="-1">Back to <A HREF="./EIPREFFR.HTM" TARGET="_top">Preface</A> &nbsp;&nbsp;<BR>&nbsp;&nbsp;Continue to <A HREF="./EIINTRFR.HTM" TARGET="_top">Introduction</A></FONT></DIV>

<P><A NAME="dingp1"></A><A NAME="pxvii"></A><FONT ID="egtitle">Acknowledgments</FONT><SCRIPT>create_link(1);</SCRIPT>
</P>

<A NAME="52"></A>
<P><A NAME="dingp2"></A>
Some three decades have elapsed since Kathy Reed taught me what a computer was and how to program one, so I suppose this is really all her fault. In 1989, Donald French asked me to develop C++ training materials for the Institute for Advanced Professional Studies, so perhaps he should shoulder some blame. The students in my class at Stratus Computer the week of June 3, 1991, were not the first to suggest I write a book summarizing the pearls of alleged wisdom that tumble forth when I teach, but they were the ones who finally convinced me to do it, so they bear some of the responsibility. I'm grateful to them <NOBR>all.<SCRIPT>create_link(2);</SCRIPT>
</NOBR></P>
<A NAME="552"></A>
<P><A NAME="dingp3"></A>
Many of the Items and examples in this book have no particular source, at least not one I can remember. Instead, they grew out of a combination of my own experiences using and teaching C++, those of my colleagues, and opinions expressed by contributors to the Usenet C++ newsgroups. Many examples that are now standard in the C++ teaching community &#151; notably strings &#151; can be traced back to the initial edition of Bjarne Stroustrup's <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cpl" onMouseOver="self.status='The C++ Programming Language Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>The</NOBR> C++ Programming Language</I></A> (Addison-Wesley, 1986). Several of the Items found here (e.g., <A HREF="./EI17_FR.HTM#2264" TARGET="_top">Item 17</A>) can also be found in that seminal <NOBR>work.<SCRIPT>create_link(3);</SCRIPT>
</NOBR></P>
<A NAME="7818"></A>
<P><A NAME="dingp4"></A>
<A HREF="./EI8_FR.HTM#120851" TARGET="_top">Item 8</A> includes an implementation idea from Steve Clamage's May 1993 <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cppreport" onMouseOver="self.status='C++ Report Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>C++</NOBR> Report</I></A> article, "Implementing <CODE>new</CODE> and <CODE>delete</CODE>." <A HREF="./EI9_FR.HTM#1961" TARGET="_top">Item 9</A> was motivated by commentary in <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=anncrm" onMouseOver="self.status='The Annotated C++ Reference Manual Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>The</NOBR> Annotated C++ Reference Manual</I></A> (see <A HREF="./EI50_FR.HTM#8569" TARGET="_top">Item 50</A>), and Items <A HREF="./EI10_FR.HTM#1986" TARGET="_top">10</A> and <A HREF="./EI13_FR.HTM#2117" TARGET="_top">13</A> were suggested by John Shewchuk. The implementation of <CODE>operator</CODE> <CODE>new</CODE> in <A HREF="./EI10.HTM#1986" TARGET="_top">Item 10</A> is based on presentations in the second edition of Stroustrup's <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cpl" onMouseOver="self.status='The C++ Programming Language Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>The</NOBR> C++ Programming Language</I></A> (Addison-Wesley, 1991) and Jim Coplien's <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=apsi" onMouseOver="self.status='Advanced C++: Programming Styles and Idioms Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>Advanced</NOBR> C++: Programming Styles and Idioms</I></A> (Addison-Wesley, 1992). Dietmar K&uuml;hl pointed out the undefined behavior I describe in <A HREF="./EI14_FR.HTM#223029" TARGET="_top">Item 14</A>. Doug Lea provided the aliasing examples at the end of <A HREF="./EI17_FR.HTM#2264" TARGET="_top">Item 17</A>. The idea of using <CODE>0L</CODE> for <CODE>NULL</CODE> in <A HREF="./EI25_FR.HTM#6292" TARGET="_top">Item 25</A> came from Jack Reeves's March 1996 <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cppreport" onMouseOver="self.status='C++ Report Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>C++</NOBR> Report</I></A> article, <A NAME="pxviii"></A><A HREF="../MAGAZINE/RE_FRAME.HTM" TARGET="_top">"Coping with Exceptions."</A> Several members of various Usenet C++ newsgroups helped refine that Item's class for implementing <CODE>NULL</CODE>-based pointer conversions via member templates. A newsgroup posting by Steve Clamage tempered my enthusiasm for references to functions in <A HREF="./EI28_FR.HTM#6429" TARGET="_top">Item 28</A>. <A HREF="./EI33_FR.HTM#6729" TARGET="_top">Item 33</A> incorporates observations from Tom Cargill's <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cps" onMouseOver="self.status='C++ Programming Style Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>C++</NOBR> Programming Style</I></A> (Addison-Wesley, 1992), Martin Carroll's and Margaret Ellis's <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=dcr" onMouseOver="self.status='Designing and Coding Resuable C++ Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>Designing</NOBR> and Coding Reusable C++</I></A> (Addison-Wesley, 1995), <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=talgdp" onMouseOver="self.status='Taligent`s Guide to Designing Programs Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>Taligent's</NOBR> Guide to Designing Programs</I></A> (Addison-Wesley, 1994), Rob Murray's <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cstrtac" onMouseOver="self.status='C++ Strategies and Tactics Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>C++</NOBR> Strategies and Tactics</I></A> (Addison-Wesley, 1993), as well as information from publications and newsgroup postings by Steve Clamage. The material in <A HREF="./EI34_FR.HTM#6793" TARGET="_top">Item 34</A> benefited from my discussions with John Lakos and from reading his book, <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=lscs" onMouseOver="self.status='Large-Scale C++ Software Design Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>Large-Scale</NOBR> C++ Software Design</I></A> (Addison-Wesley, 1996). The envelope/letter terminology in that Item comes from Jim Coplien's <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=apsi" onMouseOver="self.status='Advanced C++: Programming Styles and Idioms Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>Advanced</NOBR> C++: Programming Styles and Idioms</I></A>; John Carolan coined the delightful term, "Cheshire Cat class." The rectangle/square example of <A HREF="./EI35_FR.HTM#6914" TARGET="_top">Item 35</A> is taken from Robert Martin's March 1996 <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cppreport" onMouseOver="self.status='C++ Report Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>C++</NOBR> Report</I></A> column, "The Liskov Substitution Principle." A long-ago <CODE>comp.lang.c++</CODE> posting by Mark Linton set me straight in my thinking about grasshoppers and crickets in <A HREF="./EI43_FR.HTM#7778" TARGET="_top">Item 43</A>. My traits examples in <A HREF="./EI49_FR.HTM#8392" TARGET="_top">Item 49</A> are taken from Nathan Myers's June 1995 <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cppreport" onMouseOver="self.status='C++ Report Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>C++</NOBR> Report</I></A> article, <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=ttt" onMouseOver="self.status='A New and Useful Template Technique: Traits'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top">"A</NOBR> New and Useful Template Technique: Traits,"</A> and Pete Becker's "C/C++ Q&amp;A" column in the November 1996 <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=cuj" onMouseOver="self.status='C++/C++ Users Journal Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>C/C++</NOBR> User's Journal</I></A>; my summary of C++'s internationalization support is based on a pre-publication book draft by Angelika Langer and Klaus Kreft. Of course, "Hello world" comes from <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="http://www.awl.com/cseng/cgi-bin/cdquery.pl?name=c2pl" onMouseOver="self.status='The C Programming Language Home Page'; return true" onMouseOut="self.status = self.defaultStatus" TARGET="_top"><I>The</NOBR> C Programming Language</I></A> by Brian Kernighan and Dennis Ritchie (Prentice-Hall, first published in <NOBR>1978).<SCRIPT>create_link(4);</SCRIPT>
</NOBR></P>
<A NAME="428"></A>
<P><A NAME="dingp5"></A>
Many readers of the first edition sent suggestions I was unable to incorporate in that version of the book, but that I've adopted in one form or another for this new edition. Others took advantage of Usenet C++ newsgroups to post insightful remarks about the material in the book. I'm grateful to each of the following individuals, and I've noted where I took advantage of their ideas: Mike Kaelbling and Julio Kuplinsky (Introduction); a person my notes identify only as "a guy at Claris"<A HREF="#474"><sup>2</sup></A> (<A HREF="EI5_FR.HTM#1869" TARGET="_top">Item 5</A>); Joel Regen and Chris Treichel (<A HREF="EI7_FR.HTM#1894" TARGET="_top">Item 7</A>); Tom Cargill, Larry Gajdos, Doug Morgan, and Uwe Steinm&uuml;ller (<A HREF="EI10_FR.HTM#1986" TARGET="_top">Item 10</A>); Roger Scott and Steve Burkett (<A HREF="./EI12_FR.HTM#2071" TARGET="_top">Item 12</A>); David Papurt (<A HREF="./EI13_FR.HTM#2117" TARGET="_top">Item 13</A>); Alexander Gootman (<A HREF="./EI14_FR.HTM#223029" TARGET="_top">Item 14</A>); David Bern (<A HREF="./EI16_FR.HTM#2225" TARGET="_top">Item 16</A>); Tom Cargill, Tom Chappell, Dan Fran<A NAME="pxix"></A>klin, and Jerry Liebelson (<A HREF="./EI17_FR.HTM#2264" TARGET="_top">Item 17</A>); John "Eljay" Love-Jensen (<A HREF="./EI19_FR.HTM#5887" TARGET="_top">Item 19</A>); Eric Nagler (<A HREF="./EI22_FR.HTM#6133" TARGET="_top">Item 22</A>); Roger Eastman, Doug Moore, and Aaron Naiman (<A HREF="./EI23_FR.HTM#6210" TARGET="_top">Item 23</A>); Dat Thuc Nguyen (<A HREF="./EI25_FR.HTM#6292" TARGET="_top">Item 25</A>); Tony Hansen, Natraj Kini, and Roger Scott (<A HREF="./EI33_FR.HTM#6729" TARGET="_top">Item 33</A>); John Harrington, Read Fleming, and Dave Smallberg (<A HREF="./EI34_FR.HTM#6793" TARGET="_top">Item 34</A>); Johan Bengtsson (<A HREF="./EI36_FR.HTM#7007" TARGET="_top">Item 36</A>); Rene Rodoni (<A HREF="./EI39_FR.HTM#7269" TARGET="_top">Item 39</A>); Paul Blankenbaker and Mark Somer (<A HREF="./EI40_FR.HTM#7424" TARGET="_top">Item 40</A>); Tom Cargill and John Lakos (<A HREF="./EI41_FR.HTM#7611" TARGET="_top">Item 41</A>); Frieder Knauss and Roger Scott (<A HREF="./EI42_FR.HTM#21052" TARGET="_top">Item 42</A>); David Braunegg, Steve Clamage, and Dawn Koffman (<A HREF="./EI45_FR.HTM#8160" TARGET="_top">Item 45</A>); Tom Cargill (<A HREF="./EI46_FR.HTM#195225" TARGET="_top">Item 46</A>); Wesley Munsil (<A HREF="./EI47_FR.HTM#8299" TARGET="_top">Item 47</A>); Randy Mangoba (most class definitions); and John "Eljay" Love-Jensen (many places where I use <CODE>type double</CODE>).<SCRIPT>create_link(5);</SCRIPT>
</P>
<A NAME="57"></A>
<P><A NAME="dingp6"></A>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -