Localクラス、Innerクラス、Nestedクラスは、C ++では同じ意味ですか?
2391 次
3 に答える
7
ローカルクラスとネストされたクラスは異なる獣です。
ネストされたクラスは、別のクラスのスコープ内で宣言されたクラスです。
ローカルクラスは関数定義内で宣言されます。
内部クラスは非標準のC++用語であるため、定義方法がわかりません。
ネストされたクラス:
ここに素晴らしいドキュメンテーションとしてのIBMドキュメンテーション。
要約する:
- ネストされたクラスの名前は、それを囲むクラスに対してローカルです。明示的なポインター、参照、またはオブジェクト名を使用しない限り、ネストされたクラスの宣言では、型名、静的メンバー、およびそれを囲むクラスとグローバル変数の列挙子を含む、表示可能な構造のみを使用できます。
- ネストされたクラスのメンバー関数は、通常のアクセスルールに従い、それを囲むクラスのメンバーに対する特別なアクセス権限はありません。囲んでいるクラスのメンバー関数には、ネストされたクラスのメンバーへの特別なアクセス権はありません。
ローカルクラス:ここ
での私の答えは、ローカルクラスに関連する微妙なポイントを文書化しています。
于 2011-10-24T15:39:54.650 に答える
2
C ++ 11(N3290)のドラフトの引用:
9.7ネストされたクラス宣言[class.nest]
1クラスは別のクラス内で宣言できます。別のクラス内で宣言されたクラスは、ネストされたクラスと呼ばれます。
9.8ローカルクラス宣言[class.local]
1クラスは関数定義内で宣言できます。このようなクラスはローカルクラスと呼ばれます。
C++標準で指定されている内部クラスの概念はありません。
于 2011-10-24T16:00:48.767 に答える
0
内部クラスは、それを囲むクラスのthis
参照をキャプチャします。内部クラスインスタンスの階層は、ツリー構造を形成します。これはJavaに固有のものです。
于 2011-10-24T17:41:03.000 に答える