クラス

本物のページはこちら→class

クラスとは?

ユーザ定義である。[1]
英語で「分類」「種類」といった「同種のものの集まり」という意味。
関連性の高い関数と、変数を一つにまとめて、粒度の大きいソフトウェア部品を作る仕組み。
まとめて、隠して、たくさん作る仕組み。[2]
クラスは概念である[1]と言われているのは、物がオブジェクトになるとは限らないからだ。
振る舞い、など、物じゃないものもクラス化していいからだ。

クラス化の利点

  • 継承して使えば、ベースを作ってちょっとだけ修正、ができる。これを差分プログラミングっていうの?

関数の名前付けが短くて済む[2]

たとえば、loadFileという関数名があったとする。Fileクラスを作ってしまえば、関数名はload()で通じるよね?

定数の初期化

static const という修飾子をつければ、.hファイルの中でも初期化できる。
見やすくて最適!!
ただし、定数しかだめだぞ。

低水準型を作るときのアドバイス

Bjane Stroustrupさんによるアドバイス
低水準型とは行列クラスとかを作る時ってこと。

  1. global変数を使わない(メンバ変数にする)
  2. global関数を使わない
  3. メンバ変数をpublicにしない
  4. 1,3を避ける以外の目的でfriendを使わない。
  5. クラス内に「型フィールド」を作らず、仮想関数を使え
  6. 最適化効果が大きい場合を除き、インライン関数を使うな

エラー

オブジェクトにメンバー関数と互換性のない型修飾子があります。

関数名()const{

)と{の間にconstを入れれば治るよ!

C++のクラスの嫌いなところ

いちいち.cppファイルに

クラス名::関数名(){}

とやらなきゃいけないところ。うざったすぎる。

アクセス制限

C++ python java
public なにもなし public
protected _アンダースコア一個 protected
private __アンダースコア2個 private
const なし final

サポートサイト Wikidot.com