C++クラスの情報隠蔽メカニズム

2008 ワード

クラスでは変数と関数を宣言できます.クラスオブジェクトの内部実装と外部動作を分離するために、C++言語はクラスにカプセル化メカニズムを提供します.これに関連する3つのキーワードはprivate、protected、publicです.この3つのキーワードが表す意味はそれぞれプライベート、保護され、共通です.3つのキーワードの役割は、クラスで宣言された変数と関数の外部へのアクセスを制限することです.C++のこのメカニズムは,クラスオブジェクトの使用者がクラスがどのように使用されているかに関心を持つだけで,クラス内部の実装問題に関心を持つ必要がないようにすることができる.アクセス権限には、クラス内とクラス外の2つのセクションがあります.クラス内では、メンバー変数またはメンバー関数がprivate、public、protected属性として宣言されている場合にかかわらず、相互にアクセスできます.アクセス権限の制限はありません.クラス外では、privateプロパティとprotectedプロパティのメンバー変数とメンバー関数にオブジェクトからアクセスできませんが、publicプロパティのメンバー変数とメンバー関数にのみアクセスできます.[例1]アクセス権限を説明するbookクラスを定義する.
#include
using namespace std;

class book
{
public:
    void setprice(double a);
    double getprice();
private:
    double price;
};

void book::setprice(double a)
{
    price = a;
}

double book::getprice()
{
    return price;
}

int main()
{
    book Alice;
    Alice.setprice(29.9);
    cout<

例1では、ブックの価格属性を表すメンバー変数priceと、価格を設定するsetprice関数と、ブックの価格を取得するgetprice関数の2つのメンバー関数とを有するbookクラスが宣言される.
クラス内のメンバー変数priceはprivateプロパティに設定され、2つのメンバー関数はpublicプロパティに設定されます.private属性として宣言されたメンバー変数または関数は、クラス外ではアクセスできませんが、public属性として宣言されたメンバー変数または関数は、クラス外でアクセスできます.
もう1つのキーワードprotectedは、protected属性として宣言されたメンバー変数またはメンバー関数であり、クラス外でもアクセスできませんが、派生クラスの内部では確かにアクセスできます.これは後述しますが、ここではprotectedがクラス外でアクセスできないことを知る必要があります.
例1に戻ると、メイン関数では、bookのオブジェクトAliceを宣言し、bookクラスの関数setpriceを呼び出してAliceという本に価格を設定し、その価格は29.9元に設定される.その後bookクラスのgetprice関数を呼び出し、その価格を印刷します.
例1では、priceというメンバー変数に直接アクセスできません.プロパティはprivateに設定されていますが、クラスに2つのpublicプロパティが提供されているメンバー関数はpriceという変数を操作できます.
例1のようにbookクラスを宣言する以外は、例2および例3のように変数を宣言してもよいし、クラス内部メンバー変数および関数宣言変数の順序は任意であってもよい.
[例2]メンバー変数およびメンバー関数の宣言順序なし要件:[例2]メンバー変数およびメンバー関数の宣言順序なし要件:
class book
{
private:
    double price;
public:
    void setprice(double a);
    double getprice();
};

[例3]同じアクセス権のメンバーは、別々に宣言することもできます.
class book
{
public:
    double getprice();
private:
    double price;
public:
    void setprice(double a);
};`