C++ビギナーに捧ぐ EffectiveC++入門


はじめに

C++プログラマにとって、『Effective C++』はバイブルのような存在です。どれくらいバイブルかというと、皆さんの使っているGNUのGCCコンパイラには、EffectiveC++のコーディングガイドラインに従っているかどうかチェックするためのコンパイラオプション『-Weffc++』が、あるくらいです。

しかし、その内容は決して初心者向きではなく、実際に買ったはいいが、書棚の肥やしになっているような人たちも多いと思います。そこで、そのような初心者の人たちに EffectiveC++ を読み解くために各章のエッセンスをまとめたガイドラインを書いてみました。

C++はもう時代遅れとよく言われますが、組み込み系からビジネスシステムまで、幅広くカバーできる言語は、C++以外にありません。C++を知っていれば、おそらくどのような業界にも通用するでしょう。ITプログラマを自負するのであれば、C++は基本的な知識として備えておくべきでしょうね。なんといってもオブジェクト指向言語の元祖ですから。

初心者だけでなく、ベテランの方も基本を振り返るのに使ってもらえればうれしいですね。あらたな発見があるかも知れません。それでは、hava a enjoy!
 
第一章 CからC++への移行

1項

#define ではなく、const と inline を使おう

2項

<stdio.h>ではなく、<iostream> を使おう

3項

malloc と free よりも、new と delete を使おう

4項

コメントは、C++スタイルで書こう
第二章 メモリ管理

5項

new と delete のペアは同じ形式に揃えよう

6項

デストラクタでポインタメンバにdelete を使うのを忘れないようにしよう

7項

メモリ不足に備えよう

8項

operator new と operator delete を書くときは規約を守ろう

9項

普通の形式の new を隠蔽しないように注意しよう

10項

operator new を書くなら、operator delete も書こう
第三章 コンストラクタ、デストラクタ、代入演算子

11項

メモリを動的に割り当てるクラスでは、コピーコンストラクタと代入演算子を宣言しよう

12項

コンストラクタでは、代入よりも初期化を使おう

13項

初期化リストのメンバは、宣言した順に並べよう

14項

基底クラスには、仮想デストラクタを持たせよう

15項

operator = を書くときは、*this へのリファレンスを返そう

16項

operator = では、すべてのデータメンバに代入しよう

17項

operator = では、自分自身へ代入するケースをチェックしよう
第四章 クラスと関数:その設計と宣言

18項

クラスインターフェースが完全かつ最小限になるまでがんばろう

19項

メンバ関数、非メンバ関数、friend関数を使い分けよう

20項

データメンバをpublic インターフェースに入れるのはやめよう

21項

使えるときは、必ず const を使おう

22項

値渡しよりも、リファレンス渡しを使おう

23項

オブジェクトを返さなければならないときに、リファレンスを変えそうとがんばるのはやめよう

24項

関数のオーバーロードとデフォルト付きパラメータは、慎重に使い分けよう

25項

ポインタと数値型とにオーバーロードするのは避けよう

26項

潜在的な多義性に対するガードを固めよう

27項

暗黙のうちに生成される不要なメンバ関数は、明示的に使用を禁止しよう

28項

グローバルな名前空間は分割しよう
第五章 クラスと関数:その実装

29項

内部データのハンドルを返すのはやめよう

30項

メンバ関数は、自分よりもアクセス制限がきついメンバへの非const ポインタや参照を返さないようにしよう

31項

関数は、ローカルオブジェクトへのリファレンスや関数の中でnew で初期化したポインタの参照先を返してはいけない

32項

変数の定義は、できるだけ後回しにしよう

33項

関数はよく考えてからインライン化しよう

34項

コンパイルするファイル間の依存性はできるだけ減らそう
第六章 継承とオブジェクト指向設計

35項

public に継承するときは、その一種である関係のモデルかどうか確認しよう

36項

インターフェースの継承と実装の継承とを区別しよう

37項

継承した非仮想関数を再定義してはならない

38項

継承したデフォルトパラーメータ値を再定義してはならない

39項

継承の階層構造を下る方向のキャスト(ダウンキャスト)は避けよう

40項

それを持っている関係や、それを実装手段とする関係は、層を重ねる形でモデル化しよう

41項

継承とテンプレートの違いを理解しよう

42項

private な継承はよく考えてから使おう

43項

多重継承は慎重に使おう

44項

あなたの意図することを言おう、自分が言っていることの意味を理解しよう
第七章 その他

45項

C++がどんな関数を黙って書き、呼び出しているか知っておこう

46項

ランタイムエラーよりは、コンパイル時やリンク時エラーのほうがいい

47項

非ローカルstaticオブジェクトは、使用前に必ず初期化されるようにしよう

48項

コンパイラの警告に注意しよう

49項

標準ライブラリに精通しよう

50項

C++をもっと理解するために

Copyright(C) 2005 Yoshinori Oota All rights reserved.

本ホームページのリンクは自由です。複製、転載される場合は、必ず著者までご連絡をください。