Archive-name: C++-faq/part1 Posting-Frequency: monthly Last-modified: Feb 29, 2000 URL: http://marshall-cline.home.att.net/cpp-faq-lite/ AUTHOR: Marshall Cline / cline@parashift.com / 972-931-9470 COPYRIGHT: This posting is part of "C++ FAQ Lite." The entire "C++ FAQ Lite" document is Copyright(C)1991-2000 Marshall Cline, Ph.D., cline@parashift.com. All rights reserved. Copying is permitted only under designated situations. For details, see section [1]. NO WARRANTY: THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK, INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. C++-FAQ-Lite != C++-FAQ-Book: This document, C++ FAQ Lite, is not the same as the C++ FAQ Book. The book (C++ FAQs, Cline and Lomow, Addison-Wesley) is 500% larger than this document, and is available in bookstores. For details, see section [3]. ============================================================================== This "raw text" document was mechanically produced from the HTML version at: USA: http://marshall-cline.home.att.net/cpp-faq-lite/ USA #2: http://www.awtechnologies.com/bytes/c++/faq-lite/ Canada: http://new-brunswick.net/workshop/c++/faq Finland: http://www.utu.fi/~sisasa/oasis/cppfaq/ France: http://caor.ensmp.fr/FAQ/c++-faq-lite/ Germany: http://www.informatik.uni-konstanz.de/~kuehl/cpp/cppfaq.htm Ireland: http://snet.wit.ie/GreenSpirit/c++-faq-lite/ Spain: http://geneura.ugr.es/~jmerelo/c++-faq/ Taiwan: http://www.cis.nctu.edu.tw/c++/C++FAQ-English/ If you have a Web browser, you probably want to read one of the above HTML sites instead of this document because: * The HTML version has many hyperlinked cross references. * The HTML version is MUCH easier to read than this "raw text" version. * The HTML version is updated more regularly than this "monthly posting". ============================================================================== Improve network response: * Use the closest mirror site (see URLs above). * Browse the FAQ off-line: Use the one-click download feature to get your own local copy.[NEW!] Available in several languages: * English <http://marshall-cline.home.att.net/cpp-faq-lite/>. * Chinese (uses Big5 character set). * Portuguese. Look up stuff: * Look up a generic topic with the table of contents (35 coarse-grained topics). * Look up a specific topic with the extensive subject index (774 fine-grained topics). * Look up the changed topics with the chain of recent changes (38 changes for 1/00 and 3/00). Table of Contents: * [1] Copying permissions * [2] On-line sites that distribute this document * [3] C++-FAQ-Book versus C++-FAQ-Lite * [4] Recent changes to this document * [5] Netiquette when posting to comp.lang.c++ * [6] Big Picture issues * [7] Classes and objects * [8] References * [9] Inline functions * [10] Constructors * [11] Destructors * [12] Assignment operators * [13] Operator overloading * [14] Friends * [15] Input/output via <iostream.h> and <stdio.h> * [16] Freestore management * [17] Exceptions and error handling * [18] Const correctness * [19] Inheritance -- basics * [20] Inheritance -- virtual functions * [21] Inheritance -- proper inheritance and substitutability * [22] Inheritance -- abstract base classes (ABCs) * [23] Inheritance -- what your mother never told you * [24] Inheritance -- private and protected inheritance * [25] Coding standards * [26] Learning OO/C++ * [27] Learning C++ if you already know Smalltalk * [28] Reference and value semantics * [29] How to mix C and C++ * [30] Pointers to member functions * [31] Container classes and templates * [32] Class libraries * [33] Compiler dependencies * [34] Miscellaneous technical issues * [35] Miscellaneous environmental issues ============================================================================== Subject Index "A" * ABC (see also Inheritance) ... [22.2], [22.3] * Access rules - protected: and private: inheritance ... [24.6] - protected: and private: members ... [19.5], [19.6] * Acronyms ... [5.1] * Ada vs. C++ ... [6.4] * AFAICS (Acronym) ... [5.1] * Aliasing - Aliasing of const and non-const pointers ... [18.9], [18.11], [18.12], [18.13] - References are aliases for objects ... [8.1], [8.5] * All Terrain Vehicle (ATV) ... [27.5] * ANSI ... [6.11] - ANSI-C ... [6.10] - ANSI-C++ ... [6.12] - ANSI-C++ committee "X3J16" ... [6.11], [27.1] * Arity ... [13.7] * Arrays - Arrays are evil ... [10.5], [13.6], [16.16], [17.3], [21.5] - Specifying length at runtime ... [16.18] * Artistic Style (see Pretty Printing) ... [35.2] * Assignment operator ... [12] - Check for self-assignment ... [22.5], [25.9] - Return *this ... [25.9] - Self-assignment ... [12.1], [12.2], [12.3] - Use const in parameter ... [25.9] * Associative array (see also STL) ... [31.1] * Associativity ... [13.7] * Author (see also C++ FAQ Lite) ... [1.1] * auto_ptr ... [17.2] "B" * Backtracking ... [5.3] * bad_alloc (see also Freestore) ... [16.5], [16.6] * Bag of Apple vs. of Fruit ... [21.3] * Base class ... [19.3] * Beautifier, Code (see Pretty printing) ... [35.2] * Beginners books ... [26.8] * Big Picture issues (see Managerial issues) ... [6] * Big Three, Law of ... [16.16], [22.5], [25.9] * Binary compatibility between vendors ... [33.8] * Binding: Static vs. dynamic ... [20.2], [20.3] * Book (see C++ FAQ Book) ... [3] * Books on C++ ... [26] * Books - Beginners ... [26.8] - Design ... [26.7] - Legality issues of C++ ... [26.4], [26.6] - Morality issues of C++ ... [26.4], [26.5] * BTW (Acronym) ... [5.1] * Business criteria dominate technical criteria ... [6.4] "C" * C++2LaTeX (see Pretty printing) ... [35.2] * C++ books ... [26] * C++ compiler - Free ... [33.1] * C++ FAQ Book ... [3] - Available only in bookstores ... [3.3] - Is much bigger than this Lite document ... [3.2] - ISBN ... [3.1] - Not same as the on-line ("Lite") document ... [3.2] - URL for Amazon.com ... [3.1] * C++ FAQ Lite ... [3] - Author ... [1.1] - Availability on-line ... [2] - Book is much bigger ... [3.2] - Chinese translation ... [2.5] - Copy permissions ... [1] - Copying permissions ... [1.3] - Copyright notice ... [1.2] - Downloading ... [2.2], [2.3], [2.4] - French translation ... [2.7] - HTML version ... [2.2] - Mirror WWW sites ... [2.1] - No Warranty ... [1.4] - Not same as C++ FAQ Book ... [1.6], [3.2] - Plaintext version ... [2.3], [2.4] - Portuguese translation ... [2.6] - Recent changes ... [4] * C language - Accessing C++ data members from C ... [29.9] - C++ backward compatibility ... [6.10] - C++ is higher level than C ... [29.10] - C vs. C++ ... [6.4] - Calling C from C++ ... [29.5] - Calling C++ from C ... [29.6] - Coding standards different from C++ ... [25.3] - Common linker errors ... [23.4], [29.7] - __cplusplus ... [29.4] - extern C ... [29.3] - Including C headers ... [29.2], [29.3], [29.4] - Linking must be directed by C++ ... [29.1] - main() must be compiled using C++ ... [29.1] - Mixing C and C++ code ... [29] - Newsgroup comp.lang.c ... [5.8] - Not an efficient way to learn OO/C++ ... [26.2] - Passing C++ objects to C code ... [29.8], [29.9] - static at file-scope ... [7.5] * C++ Libraries FAQ ... [32.9] * Cache Misses - Avoiding with a Matrix class ... [13.9] - Striding the cache ... [13.9] * Changes to this document (see also C++ FAQ Lite) ... [4] * char*: Use a string-like class instead ... [13.6], [17.3] * Chinese translation of this document ... [2.5] * Circles vs. Ellipses ... [21.6], [21.7], [21.8], [21.9] * Circular dependencies ... [34.9] * class ... [7.1], [7.8] * clone() methods ... [16.22], [20.5], [22.5] * Coding standards ... [25] - Assignment operators check assignment-to-self ... [12.1], [25.9] - Assignment operators return *this ... [25.9] - Assignment operators use const ... [25.9] - Avoid arrays whenever possible ... [21.5] - Avoid dynamically typed libraries ... [32.5] - Avoid global variables ... [34.5] - Avoid hiding nested identifiers ... [34.5] - Bloodshed, Jihads, and Heat vs. Light ... [25.1] - Coding standards are never sufficient ... [25.2] - Coding standards are sometimes necessary ... [25.2] - const_cast ... [18.10] - Copy constructors use const ... [25.9] - Declare near first use ... [25.6] - Design classes from the outside-in ... [13.10] - Don't base C++ standards on C standards ... [25.3] - Don't test for NULL after new ... [16.5] - Don't test for NULL before delete ... [16.7] - Explicitly calling destructors (Don't!) ... [11.5], [11.6], [11.9] - Explicitly calling destructors (OK sometimes) ... [11.10] - Header filename extensions ... [25.8] - Identifier naming conventions ... [25.10] - Initialization lists ... [10.6], [25.9] - Law of the Big Three ... [16.16], [25.9] - Macros that contain if ... [34.1] - Macros that contain multiple lines ... [34.2] - Macros that contain token pasting ... [34.3] - Operator overloading ... [25.9] - Source filename extensions ... [25.7] - static at file-scope (Don't!) ... [7.5] - The Ellemtel coding guidelines ... [25.11] - Todd Hoff's coding guidelines ... [25.11] - Use a string object rather than a char* ... [13.6], [17.3] - Use delete[] for arrays ... [16.11] - Use of the ternary ?: operator ... [25.5] - virtual destructors ... [20.4], [25.9] * Column-major order ... [13.9] * Combinations ... [5.3] * Committee Draft (CD) for ANSI/ISO-C++ ... [6.12] * Compatibility, Binary ... [33.8] * Compiler dependencies ... [33], [33.5] * Composition - Benefits compared to freestore ... [28.4], [28.5] - Compared with private inheritance ... [24.2] - Criteria for composition vs. private inheritance ... [24.3] - Inlining virtual functions ... [28.5], [28.6] * const_cast ... [18.10] * Const correctness ... [18], [18.1] - A form of type safety ... [18.2] - Aliasing of const and non-const pointers ... [18.12] - Coding standards concerning ... [25.9], [25.9] - const_cast ... [18.10], [18.11] - const member functions ... [18.9] - Fred& const x is nonsense ... [18.7] - Fred const& x -- use const Fred& x instead ... [18.8] - Immutable (const) pointers ... [18.5] - mutable ... [18.10] - Pointer-to-const ... [18.4], [18.5] - Pointer-to-const aliasing ... [18.13] - Reference-to-const ... [18.6] - Retrofitting const correctness is hard ... [18.3] * Construct On First Use Idiom ... [10.12], [10.13] * Constructors ... [10], [16.9] - Build objects from dust ... [10.1] - Calling a virtual from ... [23.1] - Calling another constructor ... [10.3] - Coding standards re. copy constructor ... [25.9] - Default constructors ... [10.4], [10.5] - Init methods ... [10.3] - Initialization coding standard ... [10.6], [25.9] - Initialization of static data ... [10.11], [10.12], [10.13] - Member objects should be self-managing ... [17.2] - Named Constructor Idiom ... [10.8], [16.19], [16.22] - Throwing exceptions ... [17.1] - Using this within ... [10.7] - Virtual Constructor Idiom ... [16.22], [20.5], [22.5] * Containers ... [31] - Container of Thing vs. of Anything ... [21.4] - Heterogeneous ... [31.2] - Iterators ... [31.3] * Copy constructors - Should use const ... [25.9] * Copy on write (see Reference counting) ... [16.21], [16.22] * Copy semantics (see also Value semantics) ... [28.1] * Copying permissions (see also C++ FAQ Lite) ... [1], [1.3] * Copyright notice (see also C++ FAQ Lite) ... [1.2] * CORBA FAQ - HTML version ... [2.4] * Covariant Return Types ... [20.5] * Crash at runtime without any warning ... [11.5], [11.6], [16.2], [16.4], [16.11], [16.12], [17.3], [20.4], [21.1], [21.4], [21.5], [34.5] * create() methods (see Named Constructor Idiom) ... [10.8], [16.19], [16.22] * Ctor (see also Constructors) ... [10] "D" * Dangerous programming practices ... [11.5], [11.6], [11.10], [13.6], [16.2], [16.4], [16.11], [16.12], [16.16], [17.3], [20.4], [21.1], [21.4], [21.5], [23.3], [34.5] * Dangling else problems ... [34.1] * Declarations - Declare near first use ... [25.6] - List x(); declares a function, not an object ... [10.2] * Decompiling executables back into C++ source code ... [33.4] * Default parameters ... [10.3] * #define macros - Evil! ... [9.3], [27.3], [34.1], [34.2], [34.3] - Evil but sometimes useful ... [29.4], [30.5], [30.6] - See also Inline functions ... [9.1], [9.3], [26.2], [27.3], [29.4], [30.5], [30.6] - with if ... [34.1] - with multiple lines ... [34.2] - with token pasting ... [34.3] * delete ... [16.1] - delete p actually deletes *p, not p ... [16.1] - delete this ... [16.14] - delete[] uses magic ... [16.13], [33.6], [33.7] - delete[] vs. delete ... [16.11] - delete[] vs. delete for builtin types ... [16.12] - Deleting an array with delete[] ... [16.10] - Mixing with malloc() ... [16.2] * Derived classes ... [19.3] - Can access protected parts of Base ... [19.7] - Can't access private parts of Base ... [19.6] - Derived* to Base* conversion ... [19.4], [21.2] - Derived** to Base** conversion (invalid) ... [21.2] - Derived* to private Base* conversion (invalid) ... [24.4] * Design books ... [26.7] * Destructors ... [11], [16.8], [16.13], [33.6], [33.7] - Base class subobjects are automagically destructed ... [11.12] - Calling a virtual from ... [23.1] - Can't be overloaded ... [11.4] - Coding standards concerning ... [25.9] - Controlling lifetimes of locals ... [11.6], [11.7], [11.8] - Explicitly calling them (Don't!) ... [11.5], [11.6], [11.9] - Explicitly calling them (OK sometimes) ... [11.10] - Last rites ... [11.1] - Member objects are automagically destructed ... [11.11] - Order of destruction for array elements ... [11.3] - Order of destruction for locals ... [11.2] - virtual destructor coding standard ... [20.4] * Dijkstra ... [5.3] * Directory separator: use "/", not "\" ... [15.10], [34.4] * Downloading - HTML version of C++ FAQ Lite ... [2.2] - HTML version of this document ... [2.1] - Plaintext version of C++ FAQ Lite ... [2.3] - Why it's done via email ... [2.4] * Dtor (see also Destructors) ... [11] * Dynamic - Dynamic binding ... [6.7], [20.2], [20.3] - dynamic_cast ... [31.2] - Dynamic length arrays ... [16.18] - Dynamic typing ... [20.2], [27.2], [27.3], [32.5], [32.6] "E" * Ellemtel coding guidelines (see also Coding standards) ... [25.11] * Ellipses vs. Circles ... [21.6], [21.7], [21.8], [21.9] * Encapsulation ... [6.7], [7] - Definition ... [7.4] - Hides stuff from code, not from people ... [7.6] - Not necessarily violated by friends ... [14.2] - Security vs. Encapsulation ... [7.7] * End-of-file (see Input/output) ... [15.2], [15.4] * Equation parsing in C++ ... [5.3] * Etiquette (see also Netiquette) ... [5] * Evil things - Macros ... [9.3], [27.3], [34.1], [34.2], [34.3] * Exceptions ... [17] - Constructors can throw exceptions ... [17.1] - Example of throw; to re-throw current exception ... [16.9], [17.3], [33.6], [33.7] - Example of try ... catch ... [16.9], [17.3], [33.6], [33.7] - Member objects should be self-managing ... [17.2] * Executables -- decompiling back to C++ source code ... [33.4] * extern C (see also C language) ... [29], [29.3] "F" * Features of C++ from a business perspective ... [6.7] * Filenames - Extensions for header files ... [25.8] - Extensions for source code files ... [25.7] - Using "/" rather than "\" for directories ... [15.10], [34.4] * find_if ... [32.3] * Floating point ... [34.8], [35.5] * for loop ... [34.5] * FORTRAN vs. C++ ... [6.4] * Forward declarations ... [34.9] - Inline functions ... [34.11] - Member object containment ... [34.10] - Templates ... [34.12] * Free C++ compiler ... [33.1] * free() (see also Freestore) ... [16.2] * Freestore ... [16] - Allocating an array with new T[n] ... [16.10] - Automating a NULL test ... [16.6] - bad_alloc ... [16.5], [16.6] - delete handles NULL automatically ... [16.7] - delete has two steps ... [16.8] - delete this ... [16.14] - delete[] uses magic ... [16.13], [33.6], [33.7] - delete[] vs. delete ... [16.11] - delete[] vs. delete for builtin types ... [16.12] - Deleting an array with delete[] ... [16.10] - Mixing malloc() and delete ... [16.2] - Mixing new and free() ... [16.2] - Multi-dimensional arrays ... [16.15], [16.16] - new has two steps ... [16.9] - new never returns NULL ... [16.5] - Placement new ... [11.10], [16.9] - Prohibiting local objects ... [16.19] - realloc() ... [16.4] - Reference counting ... [16.20], [16.21], [16.22] - Runtime costs of heap ... [28.4], [28.5] - set_new_handler ... [16.6] - Why use new rather than malloc() ... [16.3] * French translation of this document ... [2.7] * Friends ... [14] - Choosing between members and friends ... [14.5] - Definition of friend ... [14.1] - friend doesn't necessarily violate encapsulation ... [14.2] - Friendship privileges aren't inherited ... [14.4] - Friendship privileges aren't transitive ... [14.4] - istream operator>> ... [15.7] - ostream operator<< ... [15.6] - ostream operator<< (virtual) ... [15.8] - Pros and cons of friends ... [14.3] - Virtual Friend Function Idiom ... [14.3], [15.8] * From: line of a posting (see also Netiquette) ... [5.4] * FTP sites - 128.231.128.7 ... [32.6] - butler.hpl.hp.com ... [32.2] - ftp.cs.rpi.edu ... [32.2] - ftp.cygnus.com ... [6.12] - ftp.germany.eu.net ... [35.2] - ftp.maths.warwick.ac.uk ... [6.12] - ftp.netlab.cs.rpi.edu ... [35.4] - ftp.research.att.com ... [6.12] - ftp.tex.ac.uk ... [35.2] - garbo.uwasa.fi ... [5.8] - oak.oakland.edu ... [5.8] - rtfm.mit.edu ... [5.9] - venus.ycc.yale.edu ... [35.2] - www.cs.rpi.edu ... [32.2] - www.cygnus.com ... [35.2] - www.maths.warwick.ac.uk ... [32.2] * FWIW (Acronym) ... [5.1] * FYI (Acronym) ... [5.1] "G" * Generalization (see also Inheritance) ... [19.3] * Genericity (see also Templates) ... [31.8] * Global variables: Just Say No! ... [34.5] * GNU - emacs ... [35.3] - g++ ... [5.8] * Graphics ... [5.8] * grind (see Pretty printing) ... [35.2] * Growth of C++ ... [6.5], [6.7] "H" * Has-a (see also Composition) ... [19.2], [24.2] * Header files - Filename extensions ... [25.8] - Standard headers ... [25.4] * Heap-sort ... [5.3] * Heat vs. light ... [25.1] * Heterogeneous containers ... [31.2] * Hiding inherited public features ... [21.1], [21.6], [21.7], [21.8] * Hiding rule ... [23.3] * Homework problems ... [5.2], [5.3] * Homogeneous containers ... [31.2] * Hostility ... [29.10] * How to learn OO/C++ ... [26] * HTML version of C++ FAQ Lite ... [2.2] * HTML version of the CORBA FAQ ... [2.4] * Hybrid OO programming languages ... [26.3] * Hype ... [6.3] "I" * Idioms - Construct On First Use Idiom ... [10.12], [10.13] - Named Constructor Idiom ... [10.8], [16.19], [16.22] - Virtual Constructor Idiom ... [16.22], [20.5], [22.5] - Virtual Friend Function Idiom ... [15.8] * if - within macros ... [34.1] * IMAO (Acronym) ... [5.1] * IMHO (Acronym) ... [5.1] * Immutable (const) pointers ... [18.5] * IMNSHO (Acronym) ... [5.1] * IMO (Acronym) ... [5.1] * Imperfect programming languages ... [6.2] * #include - Including C headers ... [29.2], [29.3], [29.4] - Use forward slash "/", not backslash "\" ... [34.4] * indent (see Pretty printing) ... [35.2] * Indirection, Extra layers of ... [28.5] * Infix operators ... [5.3] * Inheritance ... [6.7], [19], [20], [21], [22], [23] - Abstract base classes (ABCs) ... [22], [22.2], [22.3] - Access of private: by derived ... [19.6] - Access of protected: and private: ... [19.5] - Access of protected: by derived ... [19.7] - Array of Derived vs. of Base ... [21.4] - Calling virtuals from constructors ... [23.1] - Circle vs. Ellipse ... [21.6], [21.7], [21.8], [21.9] - Derived* to Base* conversion ... [19.4], [21.2] - Derived** to Base** conversion (invalid) ... [21.2] - Derived* to private Base* conversion (invalid) ... [24.4] - Differences between C++ and Smalltalk inheritance ... [27.4] - Hiding inherited public features ... [21.1] - Hiding rule ... [23.3] - How to code inheritance ... [19.3] - Importance of inheritance ... [19.1] - Is-a-kind-of ... [19.2] - Multiple inheritance ... [6.7], [11.12], [24.2], [29.8], [29.9], [33.8], [33.11] - Old code calls new code ... [6.9] - Parking-lot of Car vs. of Vehicle ... [21.3] - private inheritance ... [24], [24.1] - private inheritance access rules ... [24.6] - private inheritance vs. composition ... [24.2], [24.3] - protected inheritance access rules ... [24.6] - protected vs. private inheritance ... [24.5] - Pure virtual functions ... [22.4] - Redefining non-virtuals ... [23.2] - Smalltalk differences ... [27.5] - Specification device ... [19.2] - virtual constructors ... [16.22], [20.5], [22.5] - virtual data ... [28.2], [28.3] - virtual destructor coding standard ... [20.4] - virtual functions ... [20.1] - virtual functions are central to OO ... [6.8] - virtual inheritance ... [11.12], [29.8], [29.9], [33.8], [33.11] - What your Mother didn't tell you ... [23] - When to use inheritance ... [19.2] * Initialization lists (see also Coding standards) ... [10.6], [25.9] * Initialization of a static member datum ... [10.9], [10.10], [10.11], [10.12], [10.13] * Inline functions ... [9] - Better than #define macros ... [9.3] - Can degrade performance ... [9.7] - Defined outside class body ... [9.5] - Defined within class body ... [9.6] - Forward declarations ... [34.11] - Inlining virtual functions ... [28.5], [28.6] - Like a #define macro ... [9.1] - Member functions ... [9.5] - Non-member functions ... [9.4] - Safety without loss of speed ... [6.7], [9.2] * Input/output ... [15] - Binary mode on MS-DOS ... [15.9] - istream and eof ... [15.2], [15.4] - istream and invalid input characters ... [15.2] - istream and while (cin >> foo) ... [15.3] - istream operator>> ... [15.7] - istream remembers bad state ... [15.5] - ostream operator<< ... [15.6] - ostream operator<< (virtual) ... [15.8] * Inspector methods ... [18.9] * Interfaces - A simplified view in the user's vocabulary ... [7.3] - Abstract base classes (ABCs) ... [22.2] - Design interfaces from the outside-in ... [13.10] - Goal of interface design ... [7.4] - More valuable than implementation ... [22.1] - protected interface ... [19.7] - Separate from implementation ... [22.2] * Intuition isn't always correct ... [21.3], [21.4], [21.6], [21.7], [21.8] * Invalid input characters (see Input/output) ... [15.2] * iostream.h ... [15.1] * Is-a-kind-of (see also Inheritance) ... [19.2] * ISO ... [6.11] - ISO-C ... [6.10] - ISO-C++ ... [6.12] - ISO-C++ committee "WG21" ... [6.11] * Iterators ... [31.3] "J" * Java vs. C++ ... [6.4] "K" * Kind-of (see also Inheritance) ... [19.2] * Kruskal ... [5.3] * KUTGW (Acronym) ... [5.1] "L" * Language wars ... [6.4] * Large executables ... [32.8], [33.9] * Last rites (see also Destructors) ... [11.1] * LaTeX - C++2LaTeX pretty printer ... [35.2] - Macros for "C++" ... [35.1] * Law of the Big Three ... [16.16], [22.5], [25.9] * Layer of indirection ... [28.5] * Learning OO/C++ ... [26] * Learning OO/C++ - How long does it take ... [6.6] - No need to learn C first ... [26.2] - No need to learn Smalltalk first ... [26.3] * Legal mumbo jumbo - Author ... [1.1] - Copying permissions ... [1.3] - Copyright notice ... [1.2] - No Warranty ... [1.4] - Trademarks ... [1.5] * Legality books on C++ ... [26.4], [26.6] * Length of time needed to learn OO/C++ ... [6.6] * lgrind (see Pretty printing) ... [35.2] * Libraries FAQ ... [32.9] * Libraries ... [32] - Dynamically typed C++ libraries ... [32.5], [32.6] - Large executables ... [32.8], [33.9] - Numerical Recepies ... [32.7] - STL ... [32.1], [32.2], [32.4] * Lifetime of objects - Controlling lifetime of locals ... [11.6], [11.7], [11.8] - In heterogeneous containers ... [31.2] - New rule for for loop variables ... [34.5] - Order of destruction for array elements ... [11.3] - Order of destruction for locals ... [11.2] - Register liveness ... [28.5] - Using friend classes to achieve separate lifetimes ... [14.2] * Linker errors ... [10.10], [23.4], [29.7], [35.5] * Logical Interface different from Physical Layout ... [13.9] "M" * Macros (see also #define macros) ... [9.3] * malloc() - (See also Freestore) ... [16.2] - Why new is preferred over malloc() ... [16.3] * Managerial issues ... [6] - Business-centricity vs. Techno-centricity ... [6.4] - C++ is a practical tool ... [6.1] - C++ is not a perfect tool ... [6.2] - Growth of C++ ... [6.5] - Length of time needed to learn OO/C++ ... [6.6] - Some advantages of OO ... [6.3] - Standardization of C++ ... [6.11], [6.12] * map<Key,Value> (see also STL) ... [31.1] * Maseratti ... [27.5] * Matrix subscript operator ... [13.8], [13.9] * Member object containment ... [34.10] * Mentoring ... [6.6], [26.1] * Merge-sort ... [5.3] * MFC - FAQ ... [33.2] - Status bar ... [33.3] * Microsoft Windows ... [5.8], [15.9], [35.4] * Minimum Spanning Trees in C++ ... [5.3] * Mirror sites (see also This document) ... [2] * Mixing - Mixing C and C++ code (see also C language) ... [29] - Mixing malloc() and delete ... [16.2] - Mixing new and free() ... [16.2] * Monolithic class hierarchies ... [32.5], [32.6] * Morality books on C++ ... [26.4], [26.5] * MS-DOS ... [5.8], [15.9], [35.4] * Multi-dimensional arrays - Using pointers ... [16.15] - Using specific classes ... [16.16] - Using templates ... [16.17] * Multiple - Multiple encapsulated instances ... [6.7], [7.5], [31.3] - Multiple inheritance ... [6.7], [11.12], [24.2], [29.8], [29.9], [33.8], [33.11] * mutable ... [18.10] * Mutator methods ... [18.9] * MYOB (Acronym) ... [5.1] "N" * "name2()" macro for token pasting ... [34.3] * Named Constructor Idiom ... [10.8], [16.19], [16.22] * NCITS ... [6.12] * Netiquette ... [5] - From: line of a posting ... [5.4] - General netiquette ... [5.4] - Getting and reading other FAQs ... [5.9] - Posting code ... [5.7] - Reply-to: line of a posting ... [5.4] - Selecting an appropriate newsgroup ... [5.8] - Subject: line of a posting ... [5.6] * new - Advantages over malloc() ... [16.3] - Allocating an array with new T[n] ... [16.10] - Mixing with free() ... [16.2] - (See also Freestore) ... [16.1] * New handler (see also Freestore) ... [16.6] * Newsgroups - comp.graphics ... [5.8] - comp.lang.c ... [5.8] - comp.lang.c++ ... [5.8] - comp.lang.c++.moderated ... [5.8] - comp.object ... [5.8] - comp.os.ms-windows.programmer.misc ... [5.8] - comp.os.ms-windows.programmer.tools.* ... [5.8] - comp.os.msdos.programmer ... [5.8], [35.4] - comp.os.msdos.programmer.turbovision ... [5.8] - comp.programming ... [5.8] - comp.sources.wanted ... [5.8] - comp.std.c++ ... [5.8] - comp.sys.mac.oop.* ... [5.8] - comp.sys.mac.programmer.* ... [5.8] - comp.unix.programmer ... [5.8], [35.4] - comp.unix.solaris ... [5.8] - comp.windows.ms.programmer ... [35.4] - gnu.g++.bug ... [5.8] - gnu.g++.help ... [5.8] * NIHCL (National Institute of Heath Class Library) ... [32.6] * No Warranty (see also C++ FAQ Lite) ... [1.4] * Nuclear submarine ... [21.2] * NULL ... [16.5], [16.6] * Numerical Recepies code ... [32.7] "O" * Object ... [7.2] * Object-oriented: So what? ... [6.3] * Old code calls new code ... [6.9] * OO design books ... [26.7] * ?: operator ... [25.5] * Operator ?: ... [25.5] * Operator overloading ... [6.7], [13] - Assignment operator ... [12], [22.5] - Can't invent new operators ... [13.7] - Can't replace behavior on builtins ... [13.6] - Coding standards ... [25.9] - Does help the users of a class ... [13.2] - Does not help the developer of a class ... [13.4] - Examples ... [13.3] - operator!= ... [13.10] - operator() ... [13.8], [13.9] - operator++ ... [13.10] - operator[] ... [13.8], [13.9] - operator delete(void*) ... [16.8], [16.11] - operator delete[](void*) ... [16.11] - operator* (dereference operator) ... [13.10] - operator>> (istream input) ... [15.7] - operator new(size_t) ... [16.9] - operator<< (ostream output) ... [15.6] - operator<< (ostream output; virtual) ... [15.8] - Purpose of operator overloading ... [13.1] - Self-assignment ... [12.1], [12.2], [12.3] - Which operators can be overloaded ... [13.5] * Optimization - const_cast ... [18.11] * Order of static constructors ... [10.11], [10.12], [10.13] * OS/2 ... [15.9] * OTOH (Acronym) ... [5.1] * Overloading - Can't overload by return type ... [34.6] - Operators (see Operator overloading) ... [6.7] "P" * Paradigm shifts ... [6.6], [29.10] * Parameterized types (see also Templates) ... [31.7] * Parking lots ... [21.3] * Part-of (see also Composition) ... [19.2], [24.2] * Pascal vs. C++ ... [6.4] * Passing parameters - By pointer ... [8.1] - By reference ... [8.1], [28.8] - By value ... [28.8] * Perfect programming languages ... [6.2] * Permissions to copy this document ... [1] * Permutations ... [5.3] * Persistence ... [32.5], [32.6], [34.7] * Physical Layout different from Logical Interface ... [13.9] * Placement new ... [16.9] * Plaintext version of C++ FAQ Lite ... [2.3], [2.4] * Pointer semantics (see also Reference semantics) ... [28.1] * Pointer-to-const ... [18.4], [18.5], [18.13] * Pointer to function (see Pointer to member) ... [30.1] * Pointer to member ... [30] - Address of a C++ method ... [30.4] - Array of pointer-to-member ... [30.6] - Contrast to pointer-to-function ... [30.1] - Converting to pointer-to-function ... [30.2], [30.3] - Passing as pointer-to-function ... [30.2] * Polymorphism ... [6.7], [20.2] * Portuguese translation of this document ... [2.6] * Postfix operators ... [5.3] * Posting code (see also Netiquette) ... [5.7] * Pragmatics ... [6.1] * Precidence ... [13.7] * Prepare to die! (see also Destructors) ... [11.1] * Pretty printing - Artistic Style ... [35.2] - C++2LaTeX ... [35.2] - C-Clearly ... [35.2] - GNU indent ... [35.2] - tgrind ... [35.2] * Prim ... [5.3] * private inheritance ... [24], [24.1] - Access rules ... [24.6] - Compared with composition ... [24.2] - Criteria for private inheritance vs. composition ... [24.3] - Derived* to private Base* conversion (invalid) ... [24.4] - private vs. protected inheritance ... [24.5] * private: members ... [19.5], [19.6] * Proficiency in OO/C++: How long does it take ... [6.6] * protected inheritance - Access rules ... [24.6] - protected vs. private inheritance ... [24.5] * protected: members ... [19.5] - The protected: interface ... [19.7] * public: inheritance ... [19], [20], [21], [22], [23] * public: members ... [19.5] - The public: interface ... [19.7] * Pure OO programming languages ... [26.3] * Pure virtual functions ... [22.3], [22.4] "Q" * Quick-sort ... [5.3] "R" * realloc() (see also Freestore) ... [16.4] * Recent changes to this document (see also C++ FAQ Lite) ... [4] * Redefining non-virtuals ... [23.2] * Reference counting - Copy on write ... [16.21], [16.22] - Pointer semantics ... [16.20] - Reference semantics ... [16.21] - Reference semantics for a hierarchy ... [16.22] * Reference semantics ... [28], [28.7], [28.8] * References ... [8] - Assigning a reference ... [8.2] - References to const ... [18.1], [18.6] - References vs. pointers ... [8.5] - Reseating a reference ... [8.4], [18.7], [18.8] - Returning a reference ... [8.3] * Referent ... [8.2], [8.4], [28.2] * Reply-to: line of a posting (see also Netiquette) ... [5.4] * Return type ... [34.6] * Row-major order ... [13.9] * RTFM (Acronym) ... [5.1] * rtfm.mit.edu ... [5.9] * Runtime crashes without any warning ... [11.5], [11.6], [16.2], [16.4], [16.11], [16.12], [17.3], [20.4], [21.1], [21.4], [21.5], [34.5] "S" * Security vs. Encapsulation (see also Encapsulation) ... [7.7] * Self-assignment ... [12.1], [12.2], [12.3], [25.9] * Self-cleaning member objects ... [17.2] * set_new_handler (see also Freestore) ... [16.6] * Short-courses (one 40 hour workweek) ... [6.6] * Shortest path in C++ ... [5.3] * Smalltalk ... [27] - Differences with C++ ... [27.1] - Dynamic type checking ... [27.2] - Inheritance differences ... [27.4], [27.5] - Language wars vs. C++ ... [6.4] - Not an efficient way to learn OO/C++ ... [26.3] * Smart pointers ... [13.3], [16.20], [17.2] * SO (Acronym) ... [5.1] * Solaris ... [5.8] * Sorting in C++ ... [5.3] * Source filename extensions ... [25.7] * Spanning Trees in C++ ... [5.3] * Specialization (see also Inheritance) ... [19.3] * Standard headers ... [25.4] * Standardization issues ... [5.8], [6.11], [6.12], [27.1] * Static - Common linker errors due to static data members ... [10.10] - Define static data members explicitly ... [10.9], [10.10] - Initialization order fiasco ... [10.11], [10.12], [10.13] - Named Constructor Idiom using static ... [10.8], [16.19], [16.22] - static at file-scope (Don't!) ... [7.5] - Static binding ... [20.2], [20.3] - static create() methods ... [10.8], [16.19], [16.22] - Static typing ... [20.2], [27.2], [27.3] * Status bar with MFC ... [33.3] * stdio.h ... [15.1] * STL ... [32.3] - Access to on-line help ... [32.4] - FTP sites ... [32.2] - map<Key,Value> ... [31.1] - vector<T> ... [10.5], [16.18], [21.4], [21.5], [32.3] * Striding the cache (see Cache Misses) ... [13.9] * string: Better than char* ... [13.6], [17.3] * struct ... [7.1], [7.8] * Style guidelines (see Coding standards) ... [25] * Subclass - See also Inheritance ... [19.3] - Subclasses that aren't subtypes ... [27.5] * Subject: line of a posting (see also Netiquette) ... [5.6] * Submarines, Nuclear ... [21.2] * Subscript operator for Matrix ... [13.8], [13.9] * Substitutability ... [21.3], [21.4], [21.6], [21.7], [21.8] * Subtypes that aren't subclasses ... [27.5] * Superclass (see also Inheritance) ... [19.3] * Syntactic sugar ... [13.1] "T" * .tar.gz (see Downloading) ... [2.2], [2.3], [2.4] * .tar.Z (see Downloading) ... [2.2], [2.3], [2.4] * Templates ... [31] - Basics of templates ... [31.4] - Class template is a family of classes ... [31.6] - Forward declarations ... [34.12] - Function template is a family of functions ... [31.5] - Genericity ... [31.8] - Multi-dimensional arrays ... [16.17] - Parameterized types ... [31.7] * Ternary operator: ?: ... [25.5] * TeX macros for "C++" ... [35.1] * tgrind (see Pretty printing) ... [35.2] * This document (see also C++ FAQ Lite) ... [3] * this used in constructors ... [10.7] * throw ... [16.5], [16.6] * To-the-power-of operator** (Can't!) ... [13.7] * Todd Hoff's coding guidelines (see also Coding standards) ... [25.11] * ## = token pasting ... [34.3] * Token pasting via ## ... [34.3] * Trademarks ... [1.5] * Training ... [6.6] * Transitivity ... [14.4] * Type safety - Comparison with Smalltalk ... [27.2] - Const correctness ... [18.2] - Static vs. dynamic typing ... [20.2] * typeid() ... [31.2] "U" * Uncompiling executables back into C++ source code ... [33.4] * Unix ... [5.8], [35.4] * Unresolved external (see also Linker errors) ... [23.4] * Usenet newsgroups (see also Newsgroups) ... [5.8] "V" * v-pointer (see also virtual) ... [20.3], [33.8] * v-table (see also virtual) ... [20.3], [21.4], [23.4], [33.8] * Value semantics ... [28], [28.7], [28.8] * vector<T> (see also STL) ... [10.5], [16.18], [21.4], [21.5], [32.3] * Version numbers to the "language" ... [33.11] * virtual - Binary compatibility of virtual functions ... [33.8] - Calling virtual functions from constructors ... [23.1] - Calling virtual functions from destructors ... [23.1] - Inlining virtual functions ... [28.5], [28.6] - Pure virtual functions ... [22.3], [22.4] - Redefining non-virtual member functions ... [23.2] - v-pointer (virtual pointer) ... [20.3], [33.8] - v-table (virtual table) ... [20.3], [21.4], [23.4], [33.8] - Virtual Constructor Idiom ... [16.22], [20.5], [22.5] - virtual data ... [28.2], [28.3] - virtual destructor coding standard ... [20.4], [25.9] - Virtual Friend Function Idiom ... [14.3], [15.8] - virtual functions ... [20] - virtual functions are central to OO ... [6.8] - virtual functions let old code call new code ... [6.9] - virtual functions, purpose of ... [20.1] - virtual inheritance ... [11.12], [29.8], [29.9], [33.8], [33.11] * Visual Basic vs. C++ ... [6.4] * Visual C++ - FAQ ... [33.2] "W" * Wars ... [25.1] * WWW sites of this document ... [2.1] "X" * X3 Secretariat ... [6.12] "Y" * Yaccable grammar ... [33.10] "Z" * .zip (see Downloading) ... [2.2], [2.3], [2.4] * Zombie objects ... [17.1] ============================================================================== SECTION [1]: Copying permissions [1.1] Author Marshall Cline cline@parashift.com ============================================================================== [1.2] Copyright Notice The entire C++ FAQ Lite document is Copyright (C) 1991-2000 Marshall P. Cline, Ph.D. <http://marshall-cline.home.att.net/>, cline@parashift.com. All rights reserved. Copying is permitted only under designated situations[1.3]. ============================================================================== [1.3] Copying Permissions If all you want to do is quote a small portion of C++ FAQ Lite (such as one or two FAQs) in a larger document, simply attribute the quoted portion with something vaguely similar to, "From Marshall Cline's C++ FAQ Lite document, http://marshall-cline.home.att.net/cpp-faq-lite/". If you want to make a copy of large portions and/or the entire C++ FAQ Lite document for your own personal use, you may do so without restriction (provided, of course, that you don't redistribute the document to others, or allow others to copy the document). If you want to redistribute large portions and/or the entire C++ FAQ Lite document to others, whether or not for commercial use, you must get permission from the author first (and that permission is normally granted; note however that it's often easier for you to simply tell your recipients about the one-click download option[2.2]). In any event, all copies you make must retain verbatim and display conspicuously all the following: all copyright notices, the Author[1.1] section, the Copyright Notice[1.2] section, the No Warranty[1.4] section, the C++-FAQ-Lite != C++-FAQ-Book[1.6] section, and the Copy Permissions[1.3] section. If you want more and/or different privileges than are outlined here, please contact me, cline@parashift.com. I'm a very reasonable man... ============================================================================== [1.4] No Warranty THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK, INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. ============================================================================== [1.5] Trademarks * Java is a trademark of Sun Microsystems, Inc. in the United States and other countries. * All other trademarks are the property of their respective owners. Note: We'd like to list all trademarks explicitly; please let us know about who owns what trademark and we'll name them explicitly; thanks! ============================================================================== [1.6] C++-FAQ-Lite != C++-FAQ-Book This document, C++ FAQ Lite, is not the same as the C++ FAQ Book. The book (C++ FAQ, Second Edition, Cline, Lomow, and Girou, Addison-Wesley) is 500% larger than this document, and is available in bookstores. See [3] for details. ============================================================================== SECTION [2]: On-line sites that distribute this document [2.1] Where's the closest mirror site to access this document? [UPDATED!] [Recently changed the rationale for choosing a close site thanks to Stan Brown (on 1/00).] You'll probably reduce overall 'net traffic a bit by choosing a close site: * USA: marshall-cline.home.att.net/cpp-faq-lite/ * USA #2: www.awtechnologies.com/bytes/c++/faq-lite/ * Canada: new-brunswick.net/workshop/c++/faq * Finland: www.utu.fi/~sisasa/oasis/cppfaq/ * France: caor.ensmp.fr/FAQ/c++-faq-lite/ * Germany: www.informatik.uni-konstanz.de/~kuehl/cpp/cppfaq.htm * Ireland: snet.wit.ie/GreenSpirit/c++-faq-lite/ * Spain: geneura.ugr.es/~jmerelo/c++-faq/ * Taiwan: www.cis.nctu.edu.tw/c++/C++FAQ-English/ ============================================================================== [2.2] How can I get a Copy of all the HTML files of C++ FAQ Lite so I can read them Off-Line? Here's how you can get a bundled and compressed copy of the HTML files of C++ FAQ Lite e-mailed to you: 1. Select a format (.zip is common on Windows and the Mac, .tar.Z and .tar.gz are common on UNIX), then send an e-mail message to cline-cpp-faq-html-zip@crynwr.com (for .zip), cline-cpp-faq-html-tarz@crynwr.com (for .tar.Z), or cline-cpp-faq-html-targz@crynwr.com (for .tar.gz) [the contents and Subject: of the email message are irrelevant]. 2. Wait a few minutes, then check your e-mail. If you don't receive an e-mail message containing the bundled FAQ, wait a while longer and check again. If you still haven't received it after waiting an entire day, something is wrong and you can send me e-mail or try again. 3. Once you receive the FAQ in your e-mail, unpack the FAQ using the instructions contained in the associated e-mail message. Restriction: you must still abide by the Copyright Notice[1.2] and Copying Permissions[1.3]. In particular, you must not redistribute C++ FAQ Lite to others without permission from the author[1.1]. If you want to redistribute C++ FAQ Lite to someone else, the easiest way is to tell them about this one-click download feature[2.2], and let them get their own copy. Restriction: the FAQ uses "long filenames." If your machine can't handle long filenames (e.g., if it's DOS and/or Windows 3.x), you cannot unpack the FAQ. UNIX, Windows NT, Windows 95, Windows 98, and Mac all handle long filenames correctly. Note: e-mail was selected over FTP or HTTP[2.4]. ============================================================================== [2.3] How can I get a Copy of all the "plaintext" files of C++ FAQ Lite so I can read them Off-Line? The "plaintext" version of C++ FAQ Lite is posted monthly on comp.lang.c++. These simple text files are mechanically produced by stripping the HTML tags from the HTML files on the Web site <http://marshall-cline.home.att.net/cpp-faq-lite/>. Therefore the plaintext files aren't as pretty to look at and don't have the hyper-linked cross references, but they have basically the same information as the HTML files. Here's how you can get a bundled and compressed copy of the plaintext files of C++ FAQ Lite e-mailed to you: 1. Select a format (.zip is common on Windows and the Mac, .tar.Z and .tar.gz are common on UNIX), then send an e-mail message to cline-cpp-faq-plaintext-zip@crynwr.com (for .zip), cline-cpp-faq-plaintext-tarz@crynwr.com (for .tar.Z), or cline-cpp-faq-plaintext-targz@crynwr.com (for .tar.gz) [the contents and Subject: of the email message are irrelevant]. 2. Wait a few minutes, then check your e-mail. If you don't receive an e-mail message containing the bundled FAQ, wait a while longer and check again. If you still haven't received it after waiting an entire day, something is wrong and you can send me e-mail or try again. 3. Once you receive the FAQ in your e-mail, unpack the FAQ using the instructions contained in the associated e-mail message. Restriction: you must still abide by the Copyright Notice[1.2] and Copying Permissions[1.3]. In particular, you must not redistribute C++ FAQ Lite to others without permission from the author[1.1]. If you want to redistribute C++ FAQ Lite to someone else, the easiest way is to tell them about this one-click download feature[2.3], and let them get their own copy. Note: e-mail was selected over FTP or HTTP[2.4]. ============================================================================== [2.4] Why is the download via email? Why not via ftp? [UPDATED!] [Recently added caveat that out-of-date reminders aren't implemented yet thanks to Stan Brown (on 1/00).] Using FTP or HTTP would have a "cache coherency" problem. Over the years I've noticed that there are a lot of out-of-date (nay, ancient) copies of C++ FAQ Lite floating around the Internet. This has caused a lot of confusion since these ancient versions often contained bugs, missed features, and generally outdated information. Not only has it caused confusion for many, it has resulted in a plethora of worthless email in my inbox. I couldn't ever seem to get "over the hump": no matter how clear I made the current version, hundreds (perhaps thousands) of people were unaware that they were reading an outdated version. That made it harder for both them and me. By downloading the C++ FAQ Lite via email rather than ftp, I'm able to provide an extra service for people: the robot mailer (the Perl script that sends the FAQ copies to everyone) remembers which version of the FAQ each person has, and when someone's version becomes out of date, the robot will send them a courtesy email. Something like, "Your copy of the FAQ is out of date; if you want to upgrade, click here". (Note: I haven't built this feature yet; please be patient.) The goal is to help you keep up-to-date, so you won't end up reading outdated information. And also to keep my inbox from getting flooded with questions from confused readers who are reading a copy of the FAQ written before they discovered Fire. So please please don't send me e-mail asking for an FTP address since there isn't one. Thanks! ============================================================================== [2.5] Where can I download a Chinese translation of this on-line document? www.cis.nctu.edu.tw/c++/C++FAQ-Chinese/ contains a Chinese translation encoded in the "Big5" code. Note: "Big5" is a 16-bit Chinese code used mostly in Taiwan. ============================================================================== [2.6] Where can I download a Portuguese translation of this on-line document? [UPDATED!] [Recently updated the URL for the Portuguese translation of the FAQ thanks to Ricardo F. de Oliveira (on 3/00).] www.mathematica.com.br/CPPFL00.htm contains a Portuguese translation of the FAQ. ============================================================================== [2.7] Where can I download a French translation of this on-line document? www.ifrance.com/jlecomte/c++/c++-faq-lite/ contains a French translation of the FAQ. ============================================================================== SECTION [3]: C++-FAQ-Book versus C++-FAQ-Lite [3.1] Is there a C++ FAQ Book in addition to the C++ FAQ Lite? [UPDATED!] [Recently rewrote (on 3/00).] Yes, the book is C++ FAQs by Cline, Lomow, and Girou, Addison-Wesley, 1999, ISBN 0-201-30983-1. The book has achieved a five-star rating ([[*****]]) on Amazon.com, and is available in bookstores. Here is the book at Amazon.com <http://www.amazon.com/exec/obidos/ASIN/0201309831>, and here is the book at BarnesAndNoble.com <http://shop.barnesandnoble.com/booksearch/isbnInquiry.asp?isbn=0201309831>. Here are some excerpts <http://www.awl.com/cseng/titles/0-201-30983-1>. (CENTER([[Book Cover]] <http://www.awl.com/cseng/titles/0-201-30983-1/0201309831.A.jpg>)CENTER) ============================================================================== [3.2] Is there a big difference between C++ FAQ Lite and C++ FAQ Book? [UPDATED!] [Recently rewrote (on 3/00).] Yes there is a big difference. At last count, the C++ FAQ Book is 500% larger than the C++ FAQ Lite. Bottom line: the book and this Lite document are not the same. The book is both broader and deeper -- it covers subjects that aren't covered in this Lite document, and it covers subjects in more detail than this Lite document. In addition, the book has lots and lots of programming examples -- much more than are in this Lite document. ============================================================================== [3.3] How can I download an electronic copy of the C++ FAQ Book? [UPDATED!] [Recently rewrote (on 3/00).] The book is available in paper form only. You can buy it at bookstores (such as at Amazon.com <http://www.amazon.com/exec/obidos/ASIN/0201309831> or at BarnesAndNoble.com <http://shop.barnesandnoble.com/booksearch/isbnInquiry.asp?isbn=0201309831>). ============================================================================== -- Marshall Cline / 972-931-9470 / mailto:cline@parashift.com
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |