第73章 再びクラス その1


クラスについてはすでに第7章で解説していますが、STLでもクラスの作り方、使い方などは全く同じです。

クラスは非常に大事なので、再度解説します。



作り方は

class class名 {
    アクセスコントロール(private, public):
    クラスのメンバ宣言;
};//←セミコロン!!
アクセスコントロールを省略するとprivate:の意味になります。

privateなメンバはクラス外からはアクセスできませんでしたね。

クラスのメンバに関数があるときは

class SomeClass {
    int x;
    char c[10];
public:
    int func(int z);
};//セミコロン

int SomeClass::func(int z)
{
...
}//セミコロン無し
のように書きましたね。

コンストラクタとデストラクタというのもありました。 コンストラクタはクラスのオブジェクトがメモリ上に作られたとき呼び出され、メモリ上から消え去るときにはデストラクタが呼び出されました。

コンストラクタはクラス名と同じで、デストラクタはクラス名に~(チルダ)を付けたものでした。どちらも戻り値はありませんでした(voidでもない)。

忘れていた人はこれで思い出したでしょうか。知らなかった人は覚えましょう。

簡単なサンプルを見てみます。

// cl01.cpp

#include <iostream>

using namespace std;

class MyPet {
    char szName[10];
    char szKind[10];
    int nAge;
public:
    MyPet();
    ~MyPet();
    void record();
    void show();
};

MyPet::MyPet()
{
    cout << "コンストラクタが呼ばれました" << endl;
}

MyPet::~MyPet()
{
    cout << "デストラクタが呼ばれました" << endl;
}

void MyPet::record()
{
    cout << "名前は--";
    cin >>szName;
    cout << "種類は--";
    cin >> szKind;
    cout << "年齢は--";
    cin >> nAge;
    return;
}

void MyPet::show()
{
    if (strcmp(szName, "") == 0 ||
        strcmp(szKind, "") == 0 ) {
            cout << "記録がありません" << endl;
            return;
        }
    cout << "ペットの名前は" << szName << endl;
    cout << "ペットの種類は" << szKind << endl;
    cout << "ペットの年齢は" << nAge << endl;
    return;
}


int main()
{
    MyPet tama;

    tama.record();
    tama.show();

    return 0;
}
実行結果は次のようになります。




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

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