Chapter 3 |
3
|
Compaq C++ Language Environment
|
3.1
|
Using Existing C Header Files
|
3.1.1
|
Providing C and C++ Linkage
|
3.1.2
|
Resolving C++ Keyword Conflicts
|
3.1.3
|
Handling Scoping Issues
|
3.1.4
|
Support for <stdarg.h> and <varargs.h> Header Files
|
3.2
|
Using Compaq C++ with Other Languages
|
3.3
|
Linkage to Non-C++ Code and Data
|
3.4
|
How to Organize Your C++ Code
|
3.4.1
|
Code That Does Not Use Templates
|
3.4.2
|
Code That Uses Templates
|
3.4.3
|
Summary
|
3.4.4
|
Creating Libraries
|
3.5
|
Hints for Designing Upwardly Compatible C++ Classes
|
3.5.1
|
Source Compatibility
|
3.5.2
|
Link Compatibility
|
3.5.3
|
Run Compatibility
|
3.5.4
|
Additional Reading
|
Chapter 4 |
4
|
Porting to Compaq C++
|
4.1
|
Using Classes
|
4.1.1
|
Friend Declarations
|
4.1.2
|
Member Access
|
4.1.3
|
Base Class Initializers
|
4.1.4
|
Undefined Global Symbols for Static Data Members
|
4.2
|
Using Pointers
|
4.2.1
|
Pointer Conversions
|
4.2.2
|
Bound Pointers
|
4.2.3
|
Constants in Function Returns
|
4.2.4
|
Pointers to Constants
|
4.3
|
Using typedefs
|
4.4
|
Initializing References
|
4.5
|
Using the switch and goto Statements
|
4.6
|
Using Volatile Objects
|
4.7
|
Preprocessing
|
4.8
|
Managing Memory
|
4.9
|
Size-of-Array Argument to delete Operator
|
4.10
|
Flushing the Output Buffer
|
4.11
|
Missing Parenthesis Error Message
|
Chapter 5 |
5
|
Using Templates
|
5.1
|
Automatic Instantiation Quick Start
|
5.2
|
Automatic Instantiation Specifics
|
5.2.1
|
Overview of the Instantiation Process
|
5.2.2
|
Compiling and Linking
|
5.2.3
|
Repositories
|
5.2.4
|
Template Declaration File
|
5.2.5
|
Template Definition File
|
5.2.6
|
Name-Mapping File
|
5.2.7
|
Instantiation Source File
|
5.2.7.1
|
Template Definition File Lookup
|
5.2.8
|
Dependency Management
|
5.2.9
|
Building Libraries and Applications That Use Templates
|
5.2.9.1
|
Building a Standalone Library
|
5.2.9.1.1
|
Creating a Single Library
|
5.2.9.1.2
|
Creating Multiple Libraries
|
5.2.9.1.3
|
Using the /log Option on Your cxxlink Command
|
5.2.9.2
|
Building an Application
|
5.2.9.2.1
|
Building From Multiple Source Directories
|
5.2.9.2.2
|
Building Against a Standalone Library
|
5.2.9.3
|
Building a Common Instantiation Library
|
5.3
|
Useful Conventions
|
5.3.1
|
Inline Functions
|
5.3.2
|
Specializations
|
5.3.3
|
Debugging Instantiations
|
5.3.4
|
Linking Applications That Do Not Use Templates
|
5.4
|
Manual Instantiation
|
5.4.1
|
Using the /template_define Command-Line Option
|
5.4.2
|
Similarities and Differences Between Instantiation Options
|
5.4.3
|
Rules for Manually Instantiating Templates
|
Chapter 6 |
6
|
Handling C++ Exceptions
|
6.1
|
Compiling with Exceptions
|
6.2
|
Linking with Exceptions
|
6.3
|
The /exceptions Qualifier
|
6.4
|
The unexpected() and set_unexpected() Functions
|
6.5
|
C++ Exceptions and Other OpenVMS Conditions
|
6.6
|
C++ Exceptions and Signals
|
6.7
|
C++ Exceptions with setjmp and longjmp
|
6.8
|
C++ Exceptions, lib$establish and vaxc$establish
|
6.9
|
Performance Considerations
|
6.10
|
C++ Exceptions and Threads
|
6.11
|
Debugging with C++ Exceptions
|
6.12
|
Specification Conflicts
|
Chapter 7 |
7
|
The C++ Standard Library
|
7.1
|
Important Compatibility Information
|
7.2
|
How to Build Programs Using the C++ Standard Library
|
7.3
|
Incompatibilities Between the Standard Library and the ANSI C++ Draft
|
7.4
|
Standard Template Library
|
7.4.1
|
Examples of Use
|
7.4.2
|
Upgrading from the Nonstandard Compaq C++ Class Library
|
7.4.2.1
|
Upgrading from the Compaq C++ Class Library Vector to the STL Vector
|
7.4.2.2
|
Upgrading from the Compaq C++ Class Library Stack to the STL Stack
|
7.4.3
|
Differences Between STL Tutorial and Reference Guide and the Compaq C++ STL
|
7.4.3.1
|
Header File Names
|
7.4.3.2
|
STL Run-Time Support
|
7.4.3.3
|
Guide Examples Need to Be Modified
|
7.4.3.4
|
Differences by Chapter
|
7.4.4
|
Optional Switch to Control Buffering
|
7.5
|
The basic_string Library
|
7.5.1
|
The basic_string Member Functions
|
7.5.1.1
|
Constructors/Destructors/Assignment
|
7.5.1.2
|
Capacity
|
7.5.1.3
|
Element access
|
7.5.1.4
|
Modifiers
|
7.5.1.5
|
Operations
|
7.5.1.6
|
Iterators
|
7.5.2
|
The basic_string Nonmember Functions
|
7.5.3
|
The basic_string typedefs
|
7.5.4
|
Upgrading from the Nonstandard Compaq C++ Class Library String Package
|
7.5.5
|
Differences Between the basic_string Library and the Guide string Class
|
7.6
|
Numeric Limits Class
|
7.6.1
|
The numeric_limits Template Class
|
7.6.2
|
Numeric Limits Class Member Functions
|
7.6.3
|
Numeric Limits Class Data Members
|
7.6.4
|
Numeric Limits Class Data Types
|
7.7
|
The auto_ptr Class
|
7.7.1
|
The auto_ptr Member Functions
|
7.8
|
The Standard Exception Library
|
7.8.1
|
Types of Standard Exceptions
|
7.8.2
|
The exception Member Functions
|
7.8.3
|
Derived Exception Classes
|
7.9
|
The Complex Math Library
|
7.9.1
|
Example of Use
|
7.9.2
|
Complex Math Member Functions
|
7.9.3
|
Complex Math Nonmember Functions
|
7.9.4
|
Complex Math Nonmember Operators
|
7.9.5
|
Complex Math Typedefs
|
7.9.6
|
Unsafe Downcasts
|
7.9.7
|
Upgrading from the Nonstandard Complex Math Library
|
7.10
|
The Allocator Class
|
7.10.1
|
Allocator Class Member Functions
|
7.10.2
|
The allocator_interface Class
|
7.10.3
|
The allocator_interface Member Functions
|
7.10.4
|
Designing Customized Allocators
|
7.10.5
|
Using Custom Allocators with Standard Library Containers
|
7.10.6
|
Implementing Custom Containers that Use the Allocator
|