C++においても、Javaと同様にインナークラスを定義し利用することが可能です。
C++でのインナークラスの定義および利用方法を以下に示します。
C++にてインナークラスの定義および利用するには、以下のようにします。
#include <stdio.h>
class OuterClass
{
public: OuterClass()
{
puts("OuterClass() が呼ばれました。");
}
public: ~OuterClass()
{
puts("~OuterClass() が呼ばれました。");
}
class InnerClass
{
public: InnerClass()
{
puts("InnerClass() が呼ばれました。");
}
public: ~InnerClass()
{
puts("~InnerClass() が呼ばれました。");
}
};
};
void main()
{
OuterClass::InnerClass *tInnerClass=new OuterClass::InnerClass();
delete tInnerClass;
}
インナークラスを利用するには、後半部分にあるように、スコープ演算子「::」を利用してインスタンス化するインナークラスを指定します。
C++のインナークラスがJavaとものと大きく異なる点は、C++ではそのインナークラスが属するクラス(アウタークラス)がインスタンス化されていなくても、インナークラスのインスタンスが生成できる点です。
このため、C++のインナークラスはJavaのpackage代わりに利用することが多いです。
蛇足ですが、先ほど定義したインナークラスの中に、さらにインナークラスを定義することができます。
その際の定義と利用方法について、以下に示します。
#include <stdio.h>
class OuterClass
{
public:
OuterClass()
{
puts("OuterClass() が呼ばれました。");
}
~OuterClass()
{
puts("~OuterClass() が呼ばれました。");
}
class InnerClass
{
public:
InnerClass()
{
puts("InnerClass() が呼ばれました。");
}
~InnerClass()
{
puts("~InnerClass() が呼ばれました。");
}
class Inner2Class
{
public:
Inner2Class()
{
puts("Inner2Class() が呼ばれました。");
}
~Inner2Class()
{
puts("~Inner2Class() が呼ばれました。");
}
};
};
};
void main()
{
OuterClass::InnerClass::Inner2Class *tInner2Class
=new OuterClass::InnerClass::Inner2Class();
delete tInner2Class;
}
インナークラスのインナークラスを指定するには、スコープ演算子「::」を多重に指定します。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
| まだ評価がありません |
表示できるメッセージはありません。