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; }
インナークラスのインナークラスを指定するには、スコープ演算子「::」を多重に指定します。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。