C++ プログラミングガイド

はじめに

このマニュアルでは、C++ 5.0 を使用して効率の良いプログラムを書く方法について説明します。

対象読者

このマニュアルは、C++ に関する実用的な知識と、Solaris(TM) オペレーティング環境および UNIX コマンドに関するある程度の知識を持つプログラマを対象にしています。

内容の紹介

このマニュアルは次の章から構成されています。

第 1 章「Sun C++ コンパイラの紹介」では、Sun C++ コンパイラの特徴について説明しています。

第 2 章「プログラムの構成」では、ヘッダーファイル、インライン関数の定義、およびテンプレートの定義について説明しています。

第 3 章「プラグマ」では、特定の情報をコンパイラに渡すプラグマ (指令) の使用方法について説明しています。

第 4 章「テンプレート」では、テンプレートの定義と使用方法について説明しています。

第 5 章「例外処理」では、Sun C++ 5.0 コンパイラで現在実装されている例外処理につて説明しています。

第 6 章「実行時の型識別」では、RTTI について説明し、本コンパイラで使用している RTTI オプションを紹介しています。

第 7 章「キャスト演算」では、新しいキャスト演算について説明しています。

第 8 章「パフォーマンス」では、C++ 関数のパフォーマンスを改善する方法について説明しています。

マルチプラットフォーム対応


注 -

Solaris の最新リリースの名前は Solaris 7 ですが、コード名、パス名 (パッケージのパス名など) には Solaris 2.7 または SunOS(TM) 5.7 という名前が含まれていることがあります。その場合は、Solaris 2.7 または SunOS 5.7 を含む名前をそのまま使用してください。


Sun(TM) WorkShop(TM) のマニュアルの内容は、Solaris 2.5.1、Solaris 2.6、Solaris 7 オペレーティングシステムのいずれかを実行する以下のプラットフォームを対象としています。

C++ コンパイラ関連マニュアル

その他の Sun WorkShop 関連マニュアル

Sun Visual WorkShop(TM) C++ のマニュアルセットには、次のマニュアルが含まれています。

Solaris 関連マニュアル

次の Solaris 関連のマニュアルにも役立つ情報が記載されています。

市販の書籍

C++ について書かれている書籍の一部を紹介します。

『注解 C++ リファレンス・マニュアル』トッパン、Margaret A. Ellis、Bjarne Stroustrup 共著、1990 年

『C++ プライマー』第 3 版、トッパン、Stanley B. Lippman、 Josee Lajoie 共著、1998 年

『Effective C++ - C++ の 50 の急所』第 2 版、ソフトバンク、Scott Meyers 著、 1996 年

『STL 〜標準テンプレートライブラリによる C++ プログラミング〜』アジソン・ウェズレイ、David R. Musser、Atul Saini 共著、1966 年

『Object-Oriented Analysis and Design with Applications』 Second Edition、Grady Booch 共著 (Adison-Wesley, 1994)

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

『Design Patterns: Elements of Reusable Object-Oriented Software』 Erich Gamma、Richard Helm、Ralph Johnson,、John Vlissides 共著 (Addison-Wesley, 1998)

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

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

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

サンのオンラインマニュアル

サンのマニュアルは、次の形式でオンラインでご覧いただけます。

Web サイト docs.sun.com

Web サイト docs.sun.com では、サンの技術文書をオンラインでご覧になれます。 docs.sun.com にあるマニュアルの内容を参照したり、特定のタイトルや用語を含む マニュアルを検索することもできます。URL は http://docs.sun.com/ です。

AnswerBook2 コレクション

Sun WorkShop に関するマニュアルは、AnswerBook2 ソフトウェアを使用して参照することもできます。このソフトウェアは、システムの管理者がインストールの時点で AnswerBook2 形式のマニュアルをインストールしていればご利用いただけます (インストールされていない場合は、システム管理者にお問い合わせいただくか、『Sun WorkShop クイックインストール』の第 3 章を参照してインストールしてください)。AnswerBook2 の使用法の詳細については、『Sun WorkShop クイックインストール』の第 6 章または Solaris のインストール関連のマニュアルを参照するか、ご使用の環境のシステム管理者にお問い合わせください。


注 -

Solaris 2.5.1 上で AnswerBook2 形式のマニュアルを参照するには、その前にサンの Web ページから AnswerBook2 文書サーバーソフトウェアをダウンロードする必要があります。詳細については『Sun WorkShop クイックインストール』の第 6 章を参照してください。


HTML 形式のマニュアル

次の Sun WorkShop のマニュアルは、HTML 形式で用意されています。

HTML 形式のマニュアルを表示するには、次の手順に従ってください。

  1. HTML ブラウザで、次のファイルを開きます。

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

    install-directory には、Sun WorkShop がインストールされているディレクトリを入力してください (デフォルトでは /opt です)。

    ブラウザに、インストールされている Sun WorkShop 製品のマニュアル一覧が表示されます。

  2. マニュアル一覧のマニュアル名をクリックします。

    HTML 形式のマニュアルが開きます。

Sun WorkShop のオンラインヘルプとリリースノート

このリリースの WorkShop には、オンラインマニュアル以外に新しい形式のマニュアルが用意されています。詳細は、以下のいずれかを参照してください。

マニュアルページと README (最新情報) ファイル

マニュアルページ

ユーザーコマンドやライブラリ関数などの個々の項目の概要を述べたものです。

マニュアルページを表示するには次のように入力しますtopic には、参照したいコマンドやライブラリ関数の名前 (表 P-1 および 表 P-2 の「タイトル」部分) を入力してください。


% man topic

マニュアルページは次に示す位置に入っています。opt-install-dir は、インストールディレクトリを示します。

opt-install-dir/SUNWspro/man


注 -

man コマンドを使用する前に、MANPATH の先頭上記のディレクトリの名前を挿入してください。通常は、.cshrc ファイルの中の setenv MANPATH で始まる行か、.profile ファイルの中の export MANPATH で始まる行に挿入します。


次の表に C++ マニュアルページの一覧を示します。

 

表 P-1 C++ マニュアルページ

タイトル 

内容 

CC

C++ コンパイラのコマンド行オプション 

CCadmin 

テンプレートデータベースの整理。テンプレートデータベース中の符号化された名前とシンボルに関する情報を提示する。 

cartpol

C++ 複素数数学ライブラリ内のデカルト関数/極関数 

cplx.intro

C++ 複素数数学ライブラリの紹介 

cplxerr

C++ 複素数数学ライブラリ内の複素数エラー処理関数 

cplxops

C++ 複素数数学ライブラリ内の算術演算子関数 

cplextrig

C++ 複素数数学ライブラリ内の三角演算子関数 

demangle

C++ 符号化シンボル名の復号化 

filebuf

ファイル入出力用のバッファクラス 

fstream

ファイル入出力用のストリームクラス 

istream

書式付き入力と書式なし入力のサポート 

ios

基本的な iostream の書式化 

ios.intro

iostream マニュアルページの紹介 

manip

iostream マニピュレータ 

ostream

書式付き出力と書式なし出力のサポート 

queue

タスクライブラリに対するリスト管理 

sbufprot

ストリームバッファ基底クラスの限定公開インタフェース 

sbufpub

ストリームバッファ基底クラスの公開インタフェース 

sigfpe

特定の SIGFPE コード用の信号処理の許可 

ssbuf

文字配列用のバッファクラス 

stdarg

可変個引数リストの処理 

stdiobuf

C の stdio で使用するバッファクラスとストリームクラス 

stream_locker

iostream クラスオブジェクトのアプリケーションレベルでのロッキングに使われるクラス 

stream_MT

iostream クラスオブジェクトから MT への動的変換、MT から iostream クラスオブジェクトへの動的変換を確実に提供する基底クラス 

strstream

文字配列を用いた入出力に対するストリームクラス 

varargs

可変個引数リストの処理 

vector

汎用ベクトルおよび汎用スタックを提示する 

次に、C++ コンパイラに関連した情報を掲載しているマニュアルページを示します。

表 P-2 C++ 関連のマニュアルページ

タイトル 

内容 

c++filt

ファイルを順番通りに読み、C++ の符号化された名前と思われるシンボルを復号化した後、標準出力に書き出す 

dem

指定した複数の C++ 名の復号化 

fbe

アセンブリ言語のソースファイルからオブジェクトファイルの作成 

fpversion

システムの CPU と FPU に関する情報の出力 

gprof

プログラムの実行プロファイルの作成 

ild

プログラムの修正部分だけをリンクし、修正オブジェクトコードを以前に構築された実行可能ファイルに挿入することを可能にする 

inline

インライン手続きの呼び出しの展開 

lex

字句解析プログラムの生成 

rpcgen

RPC プロトコルを実装するため C/C++ コードの生成 

version

オブジェクトファイルまたはバイナリファイルのバージョン識別情報の表示 

yacc

文脈自由文法を、LALR(1) 構文解析アルゴリズムを実行する単純オートマトン用の一連の表に変換 

README (最新情報) ファイル

コンパイラに関する重要な情報を掲載したもので、次のような内容が含まれています。

README ファイルは、以下に示す位置に入っています。opt-install-dir は、インストールディレクトリを示します。

opt-install-dir/SUNWspro/READMEs/ja

README ファイルを表示するには次のように入力します。


% CC -readme

書体と記号について

このマニュアルで使用している書体と記号について説明します。

表 P-3 このマニュアルで使用している書体と記号

書体または記号 

意味 

例 

AaBbCc123

コマンド名、ファイル名、ディレクトリ名、画面上のコンピュータ出力、コーディング例。 

.login ファイルを編集します。

ls -a を使用してすべてのファイルを表示します。

machine_name% You have mail.

AaBbCc123

ユーザーが入力する文字を、画面上のコンピュータ出力と区別して表わします。 

machine_name% su

Password:

AaBbCc123 またはゴシック

コマンド行の可変部分。実際の名前または実際の値と置き換えてください。 

rm filename と入力します。

rm ファイル名 と入力します。

『 』 

参照する書名を示します。 

『SPARCstorage Array ユーザーマニュアル』 

「 」

参照する章、節、または、強調する語を示します。 

第 6 章「データの管理」を参照してください。 

この操作ができるのは、「スーパーユーザー」だけです。 

¥

枠で囲まれたコード例で、テキストがページ行幅を超える場合、バックスラッシュは、継続を示します。 

machinename% grep `^#define ¥

XV_VERSION_STRING'

コンパイラオプションとコード例では、次に示すような表記方法を使用しています。 

[ ] 

大括弧には任意指定の引数を含みます 

-xO[n] 

( ) 

括弧にはオプションの選択可能な部分を含みます 

-d(y|n) 

たて棒は引数の間を区切り、いずれか 1 つだけしか使用できないことを表します。 

-d(y|n) 

... 

3 個の点は、同じ種類のものを一部省略していることを示します。 

-xinline=f1[,...fn]

パーセント記号は、その語に特別な意味があることを示します。 

-ftrap=%all, no%division 

< > 

README などの ASCII 形式のファイルでは、適切な値に置き換える必要のある変数は、山括弧で示します。 

-xtemp=<dir> 

シェルプロンプトについて

シェルプロンプトの例を以下に示します。

表 P-4 シェルプロンプト

シェル 

プロンプト 

UNIX の C シェル 

machine_name%

UNIX の Bourne シェルと Korn シェル 

machine_name$

スーパーユーザー (シェルの種類を問わない) 

#