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

📄 ecafter.htm

📁 一个非常适合初学者入门的有关c++的文档
💻 HTM
字号:
<!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 | Afterword</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 = "ECAFTDIR.HTM";
var dingtext = "EC++ Afterword, P";
if (self == top) {
 top.location.replace(dingbase + this.location.hash);
}
</SCRIPT>

</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" ONLOAD="setResize()">
<!-- SectionName="EC++ Afterword" -->
<DIV ALIGN="CENTER"><FONT SIZE="-1">Back to <A HREF="./EC7_FR.HTM#8569" TARGET="_top">Item 50: Improve your understanding of C</A><BR>Continue to <A HREF="../BOOKINDX/INDEX.HTM" TARGET="_top">Index</A></FONT></DIV>

<a name="p237"></a>
<P><A NAME="dingp1"></A><A NAME="239"></A><FONT ID="egtitle">Afterword</FONT><SCRIPT>create_link(1);</SCRIPT>

</P>

<P><A NAME="dingp2"></A>
If, having digested 50 ways to improve your programs and designs, you still find yourself hungry for C++ guidelines, you may be interested in my second book on the subject, <I>More Effective C++: 35 New Ways to Improve Your Programs and Design</I>. Like <I>Effective C++</I>, More Effective C++ covers material that's essential for effective C++ software development, but <I>Effective C++</I> focuses more on fundamentals, while <I>More Effective C++</I> also spends time on newer language features and on advanced programming <NOBR>techniques.<SCRIPT>create_link(2);</SCRIPT>

</NOBR></P>
<A NAME="254"></A>
<P><A NAME="dingp3"></A>
You can find detailed information on <I>More Effective C++</I> &#151; including four complete Items, the book's list of recommended reading, and more &#151; at the <NOBR><FONT COLOR="#FF0000" SIZE="-2"><B>&deg;</B></FONT><A HREF="../MEC/INDEX.HTM" TARGET="_top"><I>More</NOBR> Effective C++</I> web site</A>. In case you can't wait, the contents of <I>More Effective C++</I> are summarized <NOBR>below.<SCRIPT>create_link(3);</SCRIPT>

</NOBR></P>

<TABLE CELLPADDING="3" WIDTH="100%" BORDER="0">
<TR><TD colspan="4" VALIGN="TOP"><FONT ID="mitemtoc"><A NAME="dingp4"></A><A HREF="../MEC/MCDED_FR.HTM" TARGET="_top">Dedication</A></FONT><SCRIPT>create_link(4);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><FONT ID="mitemtoc"><A NAME="dingp5"></A><A HREF="../MEC/MCACK_FR.HTM" TARGET="_top">Acknowledgments</A></FONT><SCRIPT>create_link(5);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><FONT ID="mitemtoc"><A NAME="dingp6"></A><A HREF="../MEC/MCINTRFR.HTM" TARGET="_top">Introduction</A></FONT><SCRIPT>create_link(6);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><HR WIDTH="100%" SIZE="1"><FONT ID="mitemtoc"><NOBR><A NAME="dingp7"></A><A HREF="../MEC/MC1_FR.HTM#10979" TARGET="_top">Basics</A></NOBR></FONT><SCRIPT>create_link(7);</SCRIPT>

</TD></TR>
<TD ROWSPAN="5"> &nbsp; </TD>
<TR><TD VALIGN="TOP"><A NAME="dingp8"></A><A HREF="../MEC/MC1_FR.HTM#11029" TARGET="_top"><NOBR>Item 1:</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Distinguish between pointers and references<SCRIPT>create_link(8);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp9"></A><A HREF="../MEC/MC1_FR.HTM#77216" TARGET="_top"><NOBR>Item 2:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Prefer C++-style casts<SCRIPT>create_link(9);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp10"></A><A HREF="../MEC/MC1_FR.HTM#84818" TARGET="_top"><NOBR>Item 3:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Never treat arrays polymorphically<SCRIPT>create_link(10);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp11"></A><A HREF="../MEC/MC1_FR.HTM#5218" TARGET="_top"><NOBR>Item 4:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Avoid gratuitous default constructors<SCRIPT>create_link(11);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><HR WIDTH="100%" SIZE="1"><FONT ID="mitemtoc"><NOBR><A NAME="dingp12"></A><A HREF="../MEC/MC2_FR.HTM#5701" TARGET="_top">Operators</A></NOBR></FONT><SCRIPT>create_link(12);</SCRIPT>

</TD></TR>
<TD ROWSPAN="5"> &nbsp; </TD>
<TR><TD VALIGN="TOP"><A NAME="dingp13"></A><A HREF="../MEC/MC2_FR.HTM#5970" TARGET="_top"><NOBR>Item 5:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Be wary of user-defined conversion functions<SCRIPT>create_link(13);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp14"></A><A HREF="../MEC/MC2_FR.HTM#5262" TARGET="_top"><NOBR>Item 6:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Distinguish between prefix and postfix forms of increment and decrement operators<SCRIPT>create_link(14);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp15"></A><A HREF="../MEC/MC2_FR.HTM#77702" TARGET="_top"><NOBR>Item 7:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Never overload <CODE>&amp;&amp;</CODE>, <CODE>||</CODE>, or <CODE>,</CODE><SCRIPT>create_link(15);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp16"></A><A HREF="../MEC/MC2_FR.HTM#33985" TARGET="_top"><NOBR>Item 8:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Understand the different meanings of <CODE>new</CODE> and <CODE>delete</CODE><SCRIPT>create_link(16);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><HR WIDTH="100%" SIZE="1"><FONT ID="mitemtoc"><NOBR><A NAME="dingp17"></A><A HREF="../MEC/MC3_FR.HTM#71622" TARGET="_top">Exceptions</A></NOBR></FONT><SCRIPT>create_link(17);</SCRIPT>

</TD></TR>
<TD ROWSPAN="8"> &nbsp; </TD>
<TR><TD VALIGN="TOP"><A NAME="dingp18"></A><A HREF="../MEC/MC3_FR.HTM#5292" TARGET="_top"><NOBR>Item 9:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Use destructors to prevent resource leaks<SCRIPT>create_link(18);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><a name="p238"></a><A NAME="dingp19"></A><A HREF="../MEC/MC3_FR.HTM#38223" TARGET="_top"><NOBR>Item 10:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Prevent resource leaks in constructors<SCRIPT>create_link(19);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp20"></A><A HREF="../MEC/MC3_FR.HTM#39749" TARGET="_top"><NOBR>Item 11:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Prevent exceptions from leaving destructors<SCRIPT>create_link(20);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp21"></A><A HREF="../MEC/MC3_FR.HTM#76790" TARGET="_top"><NOBR>Item 12:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Understand how throwing an exception differs from passing a parameter or calling a virtual function<SCRIPT>create_link(21);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp22"></A><A HREF="../MEC/MC3_FR.HTM#38224" TARGET="_top"><NOBR>Item 13:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Catch exceptions by reference<SCRIPT>create_link(22);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp23"></A><A HREF="../MEC/MC3_FR.HTM#6011" TARGET="_top"><NOBR>Item 14:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Use exception specifications judiciously<SCRIPT>create_link(23);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp24"></A><A HREF="../MEC/MC3_FR.HTM#40989" TARGET="_top"><NOBR>Item 15:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Understand the costs of exception handling<SCRIPT>create_link(24);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><HR WIDTH="100%" SIZE="1"><FONT ID="mitemtoc"><NOBR><A NAME="dingp25"></A><A HREF="../MEC/MC4_FR.HTM#66196" TARGET="_top">Efficiency</A></NOBR></FONT><SCRIPT>create_link(25);</SCRIPT>

</TD></TR>
<TD ROWSPAN="10"> &nbsp; </TD>
<TR><TD VALIGN="TOP"><A NAME="dingp26"></A><A HREF="../MEC/MC4_FR.HTM#40995" TARGET="_top"><NOBR>Item 16:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Remember the 80-20 rule<SCRIPT>create_link(26);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp27"></A><A HREF="../MEC/MC4_FR.HTM#41011" TARGET="_top"><NOBR>Item 17:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Consider using lazy evaluation<SCRIPT>create_link(27);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp28"></A><A HREF="../MEC/MC4_FR.HTM#41124" TARGET="_top"><NOBR>Item 18:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Amortize the cost of expected computations<SCRIPT>create_link(28);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp29"></A><A HREF="../MEC/MC4_FR.HTM#41177" TARGET="_top"><NOBR>Item 19:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Understand the origin of temporary objects<SCRIPT>create_link(29);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp30"></A><A HREF="../MEC/MC4_FR.HTM#45310" TARGET="_top"><NOBR>Item 20:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Facilitate the return value optimization<SCRIPT>create_link(30);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp31"></A><A HREF="../MEC/MC4_FR.HTM#41187" TARGET="_top"><NOBR>Item 21:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Overload to avoid implicit type conversions<SCRIPT>create_link(31);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp32"></A><A HREF="../MEC/MC4_FR.HTM#41251" TARGET="_top"><NOBR>Item 22:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Consider using <I>op=</I> instead of stand-alone <I>op</I></A><SCRIPT>create_link(32);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp33"></A><A HREF="../MEC/MC4_FR.HTM#41253" TARGET="_top"><NOBR>Item 23:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Consider alternative libraries<SCRIPT>create_link(33);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp34"></A><A HREF="../MEC/MC4_FR.HTM#41284" TARGET="_top"><NOBR>Item 24:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Understand the costs of virtual functions, multiple inheritance, virtual base classes, and RTTI<SCRIPT>create_link(34);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><HR WIDTH="100%" SIZE="1"><FONT ID="mitemtoc"><NOBR><A NAME="dingp35"></A><A HREF="../MEC/MC5_FR.HTM#6056" TARGET="_top">Techniques</A></NOBR></FONT><SCRIPT>create_link(35);</SCRIPT>

</TD></TR>
<TD ROWSPAN="8"> &nbsp; </TD>
<TR><TD VALIGN="TOP"><A NAME="dingp36"></A><A HREF="../MEC/MC5_FR.HTM#5341" TARGET="_top"><NOBR>Item 25:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Virtualizing constructors and non-member functions<SCRIPT>create_link(36);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp37"></A><A HREF="../MEC/MC5_FR.HTM#5350" TARGET="_top"><NOBR>Item 26:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Limiting the number of objects of a class<SCRIPT>create_link(37);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp38"></A><A HREF="../MEC/MC5_FR.HTM#22627" TARGET="_top"><NOBR>Item 27:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Requiring or prohibiting heap-based objects<SCRIPT>create_link(38);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp39"></A><A HREF="../MEC/MC5_FR.HTM#61766" TARGET="_top"><NOBR>Item 28:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Smart pointers<SCRIPT>create_link(39);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp40"></A><A HREF="../MEC/MC5_FR.HTM#6073" TARGET="_top"><NOBR>Item 29:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Reference counting<SCRIPT>create_link(40);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp41"></A><A HREF="../MEC/MC5_FR.HTM#6074" TARGET="_top"><NOBR>Item 30:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Proxy classes<SCRIPT>create_link(41);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp42"></A><A HREF="../MEC/MC5_FR.HTM#34883" TARGET="_top"><NOBR>Item 31:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Making functions virtual with respect to more than one object<SCRIPT>create_link(42);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><HR WIDTH="100%" SIZE="1"><FONT ID="mitemtoc"><NOBR><A NAME="dingp43"></A><A HREF="../MEC/MC6_FR.HTM#54005" TARGET="_top">Miscellany</A></NOBR></FONT><SCRIPT>create_link(43);</SCRIPT>

</TD></TR>
<TD ROWSPAN="5"> &nbsp; </TD>
<TR><TD VALIGN="TOP"><A NAME="dingp44"></A><A HREF="../MEC/MC6_FR.HTM#5373" TARGET="_top"><NOBR>Item 32:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Program in the future tense<SCRIPT>create_link(44);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp45"></A><A HREF="../MEC/MC6_FR.HTM#10947" TARGET="_top"><NOBR>Item 33:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Make non-leaf classes abstract<SCRIPT>create_link(45);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp46"></A><A HREF="../MEC/MC6_FR.HTM#33950" TARGET="_top"><NOBR>Item 34:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Understand how to combine C++ and C in the same program<SCRIPT>create_link(46);</SCRIPT>

</TD></TR>
<TR><TD VALIGN="TOP"><A NAME="dingp47"></A><A HREF="../MEC/MC6_FR.HTM#5473" TARGET="_top"><NOBR>Item 35:</A></NOBR></TD><TD>&nbsp;&nbsp;</TD><TD>Familiarize yourself with the language standard<SCRIPT>create_link(47);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><HR WIDTH="100%" SIZE="1"><FONT ID="mitemtoc"><NOBR><A NAME="dingp48"></A><A HREF="../MEC/MCREADFR.HTM" TARGET="_top">Recommended Reading</A></NOBR></FONT><SCRIPT>create_link(48);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><FONT ID="mitemtoc"><NOBR><A NAME="dingp49"></A><A HREF="../MEC/MCAUTOFR.HTM" TARGET="_top">An <CODE>auto_ptr</CODE> Implementation</A></NOBR></FONT><SCRIPT>create_link(49);</SCRIPT>

</TD></TR>
<TR><TD colspan="4" VALIGN="TOP"><FONT ID="mitemtoc"><NOBR><A NAME="dingp50"></A><A HREF="../BOOKINDX/INDEX.HTM" TARGET="_top">General Index</A></NOBR></FONT><SCRIPT>create_link(50);</SCRIPT>

</TD></TR>
</TABLE>
<BR>
<DIV ALIGN="CENTER"><FONT SIZE="-1">Back to <A HREF="./EC7_FR.HTM" TARGET="_top">Chapter 7: Miscellany</A> &nbsp;&nbsp;<BR>&nbsp;&nbsp;Continue to <A HREF="../BOOKINDX/INDEX.HTM" TARGET="_top">Index</A></FONT></DIV>

</BODY>
</HTML>

⌨️ 快捷键说明

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