Most recent C++ Tips


Table of Contents


10/23/00 toupper for strings of arbitrary character types
10/20/00 a case for protected virtual functions
10/16/00 Uses and Abuses of Vector
10/13/00 Style Case Study #1: Index Tables
10/11/00 non-member functions improve encapsulation
10/04/00 stream output of "true" and "false" for bools
09/26/00 covariant return types
09/21/00 defining a non-ASCII based stream
09/13/00 virtual inheritance and non-default constructors
09/05/00 templates in an inheritance hierarchy
09/01/00 identifiers and linker efficiency
08/29/00 inserting '\0' into ostrstream
08/24/00 hate friends/love friends
08/21/00 musings on valarray for numerical work
08/18/00 a little initialization gem
08/16/00 debugging complexity and lines of code metrics
08/15/00 timing and profiling gotchas
08/08/00 inheritance and traits
07/14/00 creating simple output manipulators
07/11/00 slow standard c++ I/O
07/05/00 Encapsulation
06/26/00 template function partial specialization partial ordering
06/20/00 fscanf equivalent with streams (I & II)
06/16/00 distinguishing constructors with artificial types
06/12/00 standard library exception appendix
06/07/00 word counting example using STL
06/06/00 accessors or public members (2)
06/05/00 accessors or public members
06/01/00 initialising STL containers
05/30/00 STL performance of resize() and reserve()
05/23/00 compile-time inheritance checking
05/22/00 copying a file's contents into a string
05/19/00 Enforcing Rules For Derived Classes
05/15/00 a rationale for static_cast
05/11/00 multiple type qualification
05/09/00 portably checking file lengths
05/05/00 c++ interview question with "no loop" solution
04/28/00 example of traits usage
04/27/00 using auto_ptr in containers
04/26/00 thread safe singleton
04/20/00 std lib headers and portability
04/18/00 how to use "inherited" typedefs
04/17/00 enforcing checking for error return values
04/12/00 Safe-STL
04/10/00 what is auto_ptr_ref for?
04/04/00 nonequivalence of int and int-like types
03/30/00 c++ compiler conformance
03/28/00 books on the standard library
03/21/00 exception safety and self-assignment
03/20/00 how to sort a std::list of pointers
03/15/00 double or nothing (float vs double)
03/15/00 template copy constructor?
03/13/00 formatting numbers
03/05/00 contructor failures
03/02/00 when is inline reasonable (part ii)
02/28/00 compile-time structure decision
02/24/00 when is inline reasonable
02/22/00 designing stream for file and console output
02/15/00 templ specialized member functions
02/14/00 standard library member functions
02/11/00 keeping destruction responsibilities at home
02/09/00 linker efficiency
02/08/00 virtual functions in constructors
02/07/00 forward declarations and namespaces
02/02/00 return value optimization
02/01/00 Amok Code
11/11/99 STL book recommendations
11/09/99 elementary exception cleanup
11/05/99 ACID Programming
11/02/99 forward declaring friends
10/29/99 abstract data type versus abstract base class
10/27/99 default-initialization for built-in types
10/26/99 relationships between streams and fstreams
10/20/99 taking the address of a temporary
10/19/99 reprocessor comment replacement
10/15/99 FILE* and output streams
10/14/99 internationalization concerns with uppercasing strings
10/13/99 a stream for custom string types
10/08/99 STL bitset versus vector
10/07/99 restricting constant template arguments
10/06/99 Stroustrup on C++ performance
09/30/99 what is information hiding
09/22/99 Exception-Safe Class Design (part II)
09/20/99 ensuring identical typedefs in templates
09/17/99 std::containter deletion problem with "const T"
09/14/99 deleting through a const pointer
09/09/99 forward declaring i/o constructs
09/08/99 constant declarations in include files
08/30/99 implementation notes on references
08/24/99 exception-safe class design
08/23/99 practical concerns of signed versus unsigned characters
08/18/99 typedefs versus defines
08/17/99 signed versus unsigned characters
08/12/99 appropriate uses of static_cast
08/10/99 internationalized printf
08/09/99 wheres and whys of const_cast
08/03/99 "plain old data"
08/02/99 anonymous unions
07/30/99 nested/local functions/classes
07/29/99 recursively defined function pointers
07/27/99 name hiding fundamentals
07/09/99 new(nothrow) or new(std::nothrow)
07/08/99 function templates without as return value or parameter
07/02/99 namespaces and overloading
07/01/99 copy constructors disallowed as member templates
06/30/99 local types disallowed as template arguments
06/29/99 exception safety in function calls
06/25/99 remove and erase for std::vector
06/22/99 pros/cons of stdio vs streams
06/09/99 examples of using static cast
06/08/99 the legality of null statements
06/04/99 pros/cons of custom constructors/assignment operators
05/28/99 smart pointer miscellanea
05/24/99 Equivalent Code?
05/21/99 accessing prot/private members via base class ptr/ref
05/18/99 enforcing some constraints at compile-time
05/17/99 nested classes versus namespaces
05/14/99 overloading based on function return type
05/10/99 internal linkage and arrays
05/07/99 performance, efficiency, and optimization
05/05/99 efficiency, performance, and design in C++
05/03/99 Migrating to Namespaces
04/30/99 type deduction in template arguments
04/26/99 the "overhead" of C++
04/21/99 requiring overridding of methods
04/20/99 exception safe assignment operator
04/19/99 separating interface and implementation using references
04/07/99 typedef vs typename in templates
04/06/99 extending STL part II
03/30/99 strings and exception safe exceptions
03/24/99 controlling access without outright friendship
03/22/99 pre- vs post-increment
03/19/99 common mistake in checking for entries in STL map
03/16/99 on the sizes of pointers
03/12/99 printf-style output with streams
03/11/99 conditionals and precedence
03/05/99 precedence and order of operations
02/29/99 design by contract in C++
02/26/99 a practical naming convention
02/19/99 sequence points and built-in operators
02/18/99 default values and overloading
02/17/99 aggregates, PODs, and constructors
02/10/99 thoughts on protected inheritance
02/08/99 using standard containers
02/04/99 private interface pattern
02/03/99 the acyclic visitor
02/01/99 C vs C++ perfromance-wise
01/27/99 conversions of pointer-to-pointers
01/26/99 complaints using STL vector
01/20/99 including via <header> versus <header.h>
01/18/99 pointer tinkering
01/15/99 hidden cost of using exception specifications
01/12/99 typedefs and const
01/11/99 stream shift operators for text
01/08/99 evaluating &*e
01/06/99 the growth of programs
01/05/99 switching streams

Allan Clarke <clarke@ses.com>
Last modified: Thu Nov 11 15:45:41 1999