C++クラスの継承と多重継承のアクセス制御
前の練習ではpublicの継承方式,すなわち共有継承方式,protectedとprivateの継承方式,すなわち
保護継承と
私有相続方式については議論していません.
単一クラスでは,保護継承と私有継承の違いを議論する意味は大きくなく,彼らの違いはマルチレベル継承の場合にのみ現れる.
ここで私は宣言して、この章の内容に対してあまり多すぎる文字で説明するのに適していないで、主にやはり例を見て、例を通じて間の関係を熟知して、多すぎる文字の説明は読者の構想を曖昧にします.
インスタンスは次のとおりです(重要なセクションでは詳細に説明しています):
例をよく見て、細心の注意を払う読者は共有相続、保護相続と私有相続の違いと特徴を理解していると信じて、最後に読者に注意してください.
継承関係では、ベースクラスのprivateメンバーはアプリケーションに対して非表示であるだけでなく、派生クラスでも非表示にアクセスできないが、ベースクラスの保護メンバーはアプリケーションに対してのみ非表示であり、派生クラスにとっては非表示であり、保護継承とプライベート継承は実際のプログラミング作業で使用されるのは極めて珍しく、技術理論上のみ意味がある.
保護継承と
私有相続方式については議論していません.
単一クラスでは,保護継承と私有継承の違いを議論する意味は大きくなく,彼らの違いはマルチレベル継承の場合にのみ現れる.
ここで私は宣言して、この章の内容に対してあまり多すぎる文字で説明するのに適していないで、主にやはり例を見て、例を通じて間の関係を熟知して、多すぎる文字の説明は読者の構想を曖昧にします.
インスタンスは次のとおりです(重要なセクションでは詳細に説明しています):
// :
// :www.cndev-lab.com
// , ,
#include <iostream>
using namespace std;
class Base
{
public://
int a1;
virtual void test() = 0;
protected://
int a2;
private://
int a3;
};
//------------------------------------------------------------------------------
class ProtectedClass:protected Base//
{
public:
void test()
{
a1 = 1;//a1 protected
a2 = 2;//a2 protected
//a3=3;// ,
}
};
class ControlProtectedClass:public ProtectedClass// public ProtectedClass
{
public:
void test()
{
a1 = 1;//a1 a1 protected
a2 = 2;//a2 a1 protected
//a3=3;// , Base , , Base
}
};
//------------------------------------------------------------------------------
class PrivateClass:private Base//
{
public:
void test()
{
a1 = 1;//a1 private
a2 = 2;//a2 private
//a3=3;// ,
}
};
class ControlPrivateClass:public PrivateClass// public PrivateClass
{
public:
void test()
{
//a1=1;// , PrivateClass ,a1 private
//a2=2;// , PrivateClass ,a1 private
//a3=3;// , Base ,PrivateClass
}
};
//------------------------------------------------------------------------------
class PublicClass:public Base// ,
{
public:
void test()
{
a1 = 1;//a1 public
a2 = 2;//a2 protected
//a3=3;// ,
}
};
class ControlPublicClass:public PublicClass// public PublicClass
{
public:
void test()
{
a1 = 1;//a1 public
a2 = 2;//a2 protected
//a3=3;// , Base , , Base
}
};
//------------------------------------------------------------------------------
int main()
{
system("pause");
}
例をよく見て、細心の注意を払う読者は共有相続、保護相続と私有相続の違いと特徴を理解していると信じて、最後に読者に注意してください.
継承関係では、ベースクラスのprivateメンバーはアプリケーションに対して非表示であるだけでなく、派生クラスでも非表示にアクセスできないが、ベースクラスの保護メンバーはアプリケーションに対してのみ非表示であり、派生クラスにとっては非表示であり、保護継承とプライベート継承は実際のプログラミング作業で使用されるのは極めて珍しく、技術理論上のみ意味がある.