第7章 最も簡単なクラスの作り方


さあ、いよいよクラスが登場しました!普通の参考書では、 ここで、延々とクラスとは何かとか、オブジェクト指向とは 何かということについて難しい話が数ページわたって続きます。

「あー、なるほど」とか「うー、難しくてよくわからん」

と、いうことになります。「あー、なるほど」と納得しても プログラムは書けません。筆者は、大昔C++について書かれた 532ページもある大きな本を読んでいました。 なるほど理論的にきちんと書かれていますが、 100ページも読まないうちに嫌になってやめてしまいました。 少しは、C++が書けるようになったかというと、 「C++とか、オブジェクト指向とかは難しいもの」という印象 だけが残って少しもプログラムは書けませんでした。 これではいけません。ある程度プログラムが書けるようになってから 体系だった本を読んだ方が理解が早いし、時間の節約です。 それに、本来プログラムは楽しいもの であるはずです。(筆者のように趣味でやっている人にとっては) 受験勉強のようにムリヤリ覚え込むものではないと思います。 まー、筆者を含めてこのホーム・ページを見ている人は超初心者ばかりですので 難しいことは一切抜きで気楽にやっていきます。

クラスの作り方をごく簡単に、いい加減に説明します。 かなりいい加減なので、決して他言してはいけません。 まず、構造体のメンバに関数が加わったようなものと大ざっぱに理解しましょう。

クラスの作り方手順 class クラス名 { アクセスコントロール: クラスメンバの宣言; };

もっとも単純なクラスの作り方です。アクセスコントロール (access control)とは、メンバが外からアクセスできるかどうか というように単純に考えてください。(本当は、もう少し面倒です) アクセスコントロールが、public:であれば外からアクセスできます。 何も書かないとprivate:の意味になってしまいます。

class test { int a; char str[32]; public: int b; void show_class(int c){ .... } }

このように定義すると、aやstrはプライベートなメンバ、 bや関数show_classはパブリックなメンバということになります。 上の例では、関数show_classの中身をクラスの定義の中にそのまま書いています。 しかし、これが長い場合は非常に見づらくなります。

class test { int a; char str[32]; public: int b; void show_class(int c); } void test :: show_class(int c) { ..... }

のように記述されることが多い。::はスコープ解決演算子 と呼ばれるもので

関数の戻り値の型 クラス名::関数名(引数リスト)

のように使います。

では、クラスメンバへのアクセス方法をごく簡単に解説します。 パブリックメンバであれば、構造体の時と同じように扱えます。 論より証拠、サンプルを示しましょう。

cl01クラスのメンバであるaはプライベートメンバですので クラスの外からはアクセスできません。 従ってmain関数からfirst.a = 15;などとするとエラーになります。

main関数内でcl01 first, second;などとあたかもcl01という データ型の変数を宣言しているようですね。 これも構造体の時と似ていますね。 構造体について忘れてしまったときは、 C言語編第15章を 参照してください。

細かいことですが、クラス宣言後にはセミコロン「;」が必要ですが メンバ関数の記述の最後にはセミコロンがないことに注意してください。

実行結果は左の通りです。

今回は、細かなところをすべて無視して 最も簡単なクラスの作り方だけを解説しました。 ともかく、書けることを主眼にしましたので途中の説明にはかなり 無謀なところがあります。後の章で少しずつ訂正していきます。 ともかくこの章を読んだだけで何とかクラスらしきものは作れるようになった 筈です。それだけで大成功です。


[C++Index] [総合Index] [Previous Chapter] [Next Chapter]

Update Jan/05/1997 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。