SSブログ

C++ クラス -継承- [開発環境]

参考サイト

http://www.geocities.jp/ky_webid/index_old.html

http://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/inherit.html

◆継承(インヘリタンス)

クラスには継承と呼ばれるメカニズムがあり、これにより既存のクラスの再利用性が高まります。継承を使うと次のようなことが実現できます。

  • 既存クラスに機能を追加した新しいクラスを定義する。
  • 既存クラスの挙動をカスタマイズした新しいクラスを定義する。
クラスの継承による機能追加

ここに鉛筆があるとします。鉛筆には芯があり、書くたびにどんどん小さくなっていきます。これをクラスにしてみましょう。

class Pencil
{
private:
SIntN core; // 鉛筆の芯の長さ
public:
Void Write()
{
core -= 1; // 書くたびに芯が 1mm ずつ小さくなる
if (core < 0) core = 0;
}
};



 



あるとき、鉛筆の後ろに消しゴムをくっつけた新製品が売り出されました。消しゴム付き鉛筆です。消しゴム付き鉛筆は、鉛筆と同じ機能をもちながら、さらに消しゴムの機能ももっています。



このように機能が追加されたクラスは次のように定義することができます。




class ErasePencil : public Pencil
{
private:
SIntN rubber; // 消しゴムの大きさ
public:
Void Erase()
{
rubber -= 1; // 消すたびにゴムが 1 立方mm ずつ小さくなる
if (rubber < 0) rubber = 0;
}
};



class キーワードに : public Pencil を指定することで、Pencil のメンバ変数とメンバ関数を引継ぐことができます。つまり、ErasePencil はメンバ変数 core とメンバ関数 Write() をもっています。それに加えて、新しく定義したメンバ変数 rubber とメンバ関数 Erase() ももっています。したがって、次のようなコードを書くことができます。




ErasePencil pen;
pen.Write(); // Pencil クラスから引き継いだメンバ関数の呼び出し
pen.Erase(); // ErasePencil クラスで新たに定義したメンバ関数の呼び出し



 



このように、既存のクラスのメンバを引き継ぐことを継承といいます。引き継ぎの元となるクラスを基底クラス、引き継いで新しく定義したクラスのことを派生クラスといいます。「ErasePencil は Pencil の派生クラスである」とか「Pencil は ErasePencil の基底クラスである」という言い方をします


Windows7でgrepを使う [開発環境]

フレームワークなどの膨大なファイルから必要な文字列を所在を検索するために、Linuxではgrepコマンドが使われる。これをWindows7上で行う方法を調べた。

1. cygwinのダウンロードとインストール

このサイトから"setup.exe"をダウンロードします。

image

setup.exe を起動します。

image

image

インストール先を”e:\cygwin”に変更しました。ここは各自の環境により変更してください。

image

image

インターネットへの接続方法を指定します。

image

日本のサイトを選びました。

image

パッケージの選択画面です。あとから変更可能なので、ここではデフォルトのまま進みます。

image

image

完了です。

image

2. Cygwinの確認

デスクトップにできたCygwinアイコンを起動します。

image

grepのバージョンを確認してみる。

image

3. Cygwinを使う

① cドライブにアクセスする。

“mount”コマンドで現在のマウントポイントを確認する。

image

cドライブは、”/cygdrive/c”にマウントされている事がわかる。

cドライブへ移動し、”ls”コマンドでファイル内容を確認してみる。

image

“c:\”のファイルが確認できている。

② フォルダ移動

grepしたいディレクトリに移動する。スペースや()等の特殊記号が含まれるホルダーへの移動は記号の前に”\”を追加します。例えば、

”c:\Progeam Files (x86)” へ移動する場合、以下と記述します。

$ cd c:\Program\ Files\ \(x86\)




image



③ grepする



書式



$ grep [オプション] パターン ファイル



◆ <INtime>フォルダー以下にあるファイル群から”BEFORE_INIT”を含むファイルを探すには。




$ grep –n –r BEFORE_INIT INtime




◆ ヘッダーファイルのみを対象に検索する場合。




$ find INtime –name  *.h | xargs grep –n –r BEFORE_INIT




xargs はfind で見つかった全ファイルのパスを、一度に grep に渡している。



オプションは




-b:行のブロック番号をつける
-c:パターンに一致した行の行数のみを出力する
-h:複数ファイルを指定した際にファイル名を出力しない
-i:大文字小文字を区別しない
-l:パターンに一致した行を含むファイル名だけを出力する
-n:パターンに一致した行のファイル内での行番号を出力する
-s:エラーメッセージのみを出力する
-v:パターンに一致しない行のみを出力する
–color:一致文字列に色を付ける
-o:一致した文字列だけを出力する
-r:特定ディレクトリ以下を再帰的に検索する


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。