C++ Programming Guide

Preface

This manual tells you how to use C++ 5.0 features to write more efficient programs.

Who Should Use This Book

This manual is intended for programmers with a working knowledge of C++ and some understanding of the Solaris(TM) operating environment and UNIX\256 commands.

How This Book Is Organized

This book contains the following chapters:

Chapter 1, "Introduction," briefly describes the features of the compiler.

Chapter 2, "Program Organization," discusses header files, inline function definitions, and template definitions.

Chapter 3, "Pragmas," provides information on using pragmas, or directives, to pass specific information to the compiler.

Chapter 4, "Templates," discusses the definition and use of templates.

Chapter 5, "Exception Handling," discusses the Sun C++ 5.0 compiler's implementation of exception handling.

Chapter 6, "Runtime Type Identification," explains RTTI and introduces the RTTI options supported by the compiler.

Chapter 7, "Cast Operations," describes new cast operations.

Chapter 9, "Performance," explains how to improve the performance of C++ functions.

Multiplatform Release


Note -

The name of the latest Solaris operating environment release is Solaris 7 but code and path or package path names may use Solaris 2.7 or SunOS 5.7.


The Sun(TM) WorkShop(TM) documentation applies to Solaris 2.5.1, Solaris 2.6, and Solaris 7 operating environments on:

C++ Compiler Related Books

The following books are part of the C++ 5.0 documentation package.

Other Sun WorkShop Books

The following books are part of the Sun Visual WorkShop C++ documentation package:

Solaris Books

The following Solaris manuals and guides provide additional useful information:

Commercially Available Books

The following is a partial list of available books on the C++ language.

Object-Oriented Analysis and Design with Applications, Second Edition, Grady Booch (Addison-Wesley, 1994)

Thinking in C++, Bruce Eckel (Prentice Hall, 1995)

The Annotated C++ Reference Manual, Margaret A. Ellis and Bjarne Stroustrup (Addison-Wesley, 1990)

Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, (Addison-Wesley, 1995)

C++ Primer, Third Edition, Stanley B. Lippman and Josee Lajoie (Addison-Wesley, 1998)

Effective C++-50 Ways to Improve Your Programs and Designs, Second Edition, Scott Meyers (Addison-Wesley, 1998)

More Effective C++-35 Ways to Improve Your Programs and Designs, Scott Meyers (Addison-Wesley, 1996)

STL Tutorial and Reference Guide-Programming with the Standard Template Library, David R. Musser and Atul Saini (Addison-Wesley, 1996)

C++ for C Programmers, Ira Pohl (Benjamin/Cummings, 1989)

The C++ Programming Language, Third Edition, Bjarne Stroustrup (Addison-Wesley, 1997)

Ordering Sun Documents

The SunDocs(TM) program provides more than 250 manuals from Sun Microsystems, Inc. If you live in the United States, Canada, Europe, or Japan, you can purchase documentation sets or individual manuals using this program.

For a list of documents and how to order them, see the catalog section of the SunExpress(TM) Internet site at http://www.sun.com/sunexpress.

Accessing Sun Documents Online

Sun WorkShop documentation is available online from several sources:

Using the docs.sun.com Web site

The docs.sun.com Web site enables you to access Sun technical documentation online. You can browse the docs.sun.com archive or search for a specific book title or subject. The URL is http://docs.sun.com.

Accessing AnswerBook2 Collections

The Sun WorkShop documentation is also available using AnswerBook2 software. To access the AnswerBook2 collections, your system administrator must have installed the AnswerBook2 documents during the installation process (if the documents are not installed, see your system administrator or Chapter 3 of Sun WorkShop Quick Install for installation instructions). For information about accessing AnswerBook2 documents, see Chapter 6 of Sun WorkShop Quick Install, Solaris installation documentation, or your system administrator.


Note -

To access AnswerBook2 documents, Solaris 2.5.1 users must first download AnswerBook2 documentation server software from a Sun Web page. For more information, see Chapter 6 of Sun WorkShop Quick Install.


Accessing HTML Documents

The following Sun Workshop documents are available online only in HTML format:

To access these HTML documents:

  1. Open the following file through your HTML browser:

    install-directory/SUNWspro/DOC5.0/lib/locale/C/html/index.html

    Replace install-directory with the name of the directory where your Sun WorkShop software is installed (the default is /opt).

    The browser displays an index of the HTML documents for the Sun WorkShop products that are installed.

  2. Open a document in the index by clicking the document's title.

Accessing Sun WorkShop Online Help and Release Notes

This release of Sun WorkShop includes an online help system as well as online manuals. To find out more see:

Man Pages

Online man pages provide immediate documentation about a command or library function. You can display a man page by running the command:


demo% man topic

Man pages are in:

opt-install-dir/SUNWspro/man

Table P-1 lists and describes the C++ man pages.


Note -

Before you use the man command, at the beginning of your search path, insert the name of the directory in which you have chosen to install the C++ compiler. This enables you to use the man command. This is usually done in the .cshrc file, in a line with setenv MANPATH at the start; or in the .profile file, in a line with export MANPATH at the start.


Table P-1 C++ Man Pages

Title 

Description 

CC 

Drives the C++ compilation system 

cartpol 

Provides Cartesian/polar functions in the C++ complex number math library 

cplx.intro 

Introduces the C++ complex number math library 

cplxerr 

Provides complex error-handling functions in the C++ complex number math library 

cplxops 

Provides arithmetic operator functions in the C++ complex number math library 

cplextrig 

Provides trigonometric operator functions in the C++ complex number math library 

demangle 

Decodes a C++ encoded symbol name 

filebuf 

Buffer class for file I/O 

fstream 

Provides stream class for file I/O 

istream 

Supports formatted and unformatted input 

ios 

Provides basic iostream formatting 

ios.intro 

Introduces iostream man pages 

manip 

Provides iostream manipulators 

ostream 

Supports formatted and unformatted output 

queue 

Provides list management for task library 

sbufprot 

Provides protected interface of streambuffer base class 

sbufpub 

Provides public interface of streambuffer base class 

sigfpe 

Allows signal handling for specific SIGFPE codes 

ssbuf 

Provides buffer class for character arrays 

stdarg 

Handles variable argument list 

stdiobuf 

Provides buffer and stream classes for use with C stdio 

stream_locker 

Provides class used for application level locking of iostream class object 

stream_MT 

Base class that provides dynamic changing of iostream class object to and from MT safely 

strstream 

Provides stream class for I/O using character arrays 

varargs 

Handles variable argument list 

vector 

Provides generic vector and stack 

Table P-2 lists man pages that contain information related to the C++ compiler.

Table P-2 Man Pages Related to C++

Title 

Description 

c++filt 

Copies each file name in sequence and writes it in the standard output after decoding symbols that look like C++ demangled names. 

dem 

Demangles one or more C++ names that you specify 

fbe 

Creates object files from assembly language source files. 

fpversion 

Prints information about the system CPU and FPU 

gprof 

Produces execution profile of a program 

ild 

Links incrementally, allowing insertion of modified object code into a previously built executable 

inline 

Expands assembler inline procedure calls 

lex 

Generates lexical analysis programs 

rpcgen 

Generates C/C++ code to implement an RPC protocol 

version 

Displays version identification of object file or binary 

yacc 

Converts a context-free grammar into a set of tables for a simple automaton that executes an LALR(1) parsing algorithm 

README file

The README file highlights important information about the compiler, including:

README files are in:

opt-install-dir/SUNWspro/READMEs

To view the C++ compiler README file, type:


%CC -readme

What Typographic Changes Mean

The following table describes the typographic changes used in this book.

Table P-3 Typographic Conventions

Typeface or Symbol 

Meaning 

Example 

AaBbCc123

The names of commands, files, and directories; on-screen computer output. 

Edit your .login file.

Use ls -a to list all files.

machine_name% You have mail.

 

AaBbCc123

What you type, contrasted with on-screen computer output. 

machine_name% su

Password:

AaBbCc123

Command-line placeholder: 

replace with a real name or value. 

To delete a file, type rm filename.

AaBbCc123

Book titles, new words or terms, or words to be emphasized 

Read Chapter 6 in User's Guide. These are called class options.

You must be root to do this.

Compiler options and commands use the following conventions: 

[ ]

 

Square brackets contain arguments that are optional. 

-xO[n]

 

( ) 

Parentheses contain a set of choices for a required option. 

-d(y|n)

|

 

The "pipe" or "bar" symbol separates arguments, only one of which may be used at one time. 

-d(y|n) 

...

 

The ellipsis indicates omission in a series. 

-xinline=f1[,...fn]

 

%

 

The percent sign indicates the word has a special meaning.  

-ftrap=%all, no%division

 

<>

 

In ASCII files, such as the README file, angle brackets contain a variable that must be replaced by an appropriate value.

-xtemp=<dir>

 

Shell Prompts in Command Examples

The following table shows the default system prompt and superuser prompt for the C shell, Bourne shell, and Korn shell.

Table P-4 System Prompts

Shell 

Prompt 

C shell prompt 

machine_name%

C shell superuser prompt 

machine_name#

Bourne shell and Korn shell prompt 

$

Bourne shell and Korn shell superuser prompt 

#