C++の内部クラス
6501 ワード
コンテンツの概要内部クラスは何ですか 内部クラスの役割 コード例 とjava内部クラスの対比 内部クラスとは
内部クラスはC++のネストされたクラスです.クラス宣言で定義されたローカルデータ型です
内部クラスの役割
内部クラスは外部クラスで定義されていますが、両者は関係なく、個人的に内部クラスの役割はコードの組織と管理のために多く感じられます.内部クラスは、対応するpublicまたはprivateプロパティに基づいて、外部で変数を定義できるかどうかを制御します. 外部クラスのメンバー変数がタイプ名、静的または列挙数でない場合、内部クラスは直接メンバー変数を使用できません. は、内部クラスと外部クラスをより一般的に実現するために、メンバーポインタを追加し、メタ関数を宣言することによってprivateデータにアクセスすることもできる.
コードの例
Java内部クラスとの比較
后でjavaを学んで更に补います!!!
内部クラスはC++のネストされたクラスです.クラス宣言で定義されたローカルデータ型です
内部クラスの役割
内部クラスは外部クラスで定義されていますが、両者は関係なく、個人的に内部クラスの役割はコードの組織と管理のために多く感じられます.
コードの例
/* * 1. 、
* 2.
*
*/
template<typename T>
class Outer{
public:
Outer(){
cout<<"address of Outer: "<<this<<endl;}
class Inner{
public:
Inner(){
cout<<"address of Inner: " <<this<<endl;}
T set_val_Outer(T val)
{
Outer<T>* Outer_addr = (Outer<T>*)((char*)this-offsetof(Outer<T>, in));//offsetof cstddef
Outer_addr->val_Outer = val;
return Outer_addr->val_Outer;
}
T val_Inner;
} in;// , , , in > 。
T val_Outer;
};
int main()
{
Outer<int> outer;
Outer<int>::Inner inner;
outer.val_Outer=3;
inner.val_Inner=4;
cout<<outer.val_Outer<<","<<inner.val_Inner<<endl;
outer.in.set_val_Outer(12);
cout<<"Outer val after reset:"<<outer.val_Outer<<endl;
return 0;
}
Java内部クラスとの比較
后でjavaを学んで更に补います!!!