ホームページ > バックエンド開発 > C++ > C クラスはそれ自体をメンバー変数として含めることができますか?

C クラスはそれ自体をメンバー変数として含めることができますか?

Patricia Arquette
リリース: 2024-12-23 05:05:38
オリジナル
288 人が閲覧しました

Can a C   Class Include Itself as a Member Variable?

C クラスは自分自身をメンバーとして相互に含めることができますか?

C では、自分自身をメンバーとして含むクラスを定義したくなります。式ツリーのようなネストされた構造を表現します。ただし、このアプローチは許可されていません。

理由:

提供された回答に記載されているように、独自の型のメンバー変数を使用してクラスを定義すると、無限に大きな物体。各 Node には 2 つの Node オブジェクトが含まれ、さらに 2 つの Node オブジェクトが含まれるというように、無限に続きます。これにより、メモリ割り当てが現実的でなくなり、ランタイム エラーが発生します。

解決策:

この問題を解決するには、クラス型へのポインタをメンバ変数として使用する必要があります。クラス型自体の代わりに。これにより、無限再帰の問題を回避しながらネストの表現が可能になります。

次の修正された定義を考えてみましょう:

class Node {
    char *cargo;
    Node* left;   // Pointer to a Node object
    Node* right;  // Another pointer to a Node object
};
ログイン後にコピー

ポインターを使用することで、実行せずにツリー状の構造を作成できます。自己言及問題に突入します。

以上がC クラスはそれ自体をメンバー変数として含めることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート