4

私の大学のコースブックには、次のように記載されています。

クラスのコンストラクターが宣言されると、クラス オブジェクトの初期化が必須になります。

本の特定のページへのリンク。

何もしないコンストラクターを宣言できるため、初期化は必須ではありませんか?

そうでない場合、著者は、コンストラクターを明示的に宣言する場合 、スタイル的にクラスメンバーを初期化する必要があることを意味していますか?つまり、ルールまたはガイドラインとして意図されているのですか?

4

2 に答える 2

7

次の場合、コンストラクターでメンバーを初期化する必要があります。

  1. Member には既定のコンストラクターがありません。
  2. メンバーは参照/定数参照です。
  3. メンバは const です。(アヌビスさんに感謝)

次の場合に奇妙な動作を望まない場合は、メンバーを初期化する必要があります。

  1. メンバーはポインタ
  2. メンバーはスタンダードなポッド型
于 2012-08-22T14:52:49.373 に答える
6

クラスに対してコンストラクターが宣言されると、クラスオブジェクトの初期化が必須になります。

それは本当ですが、初期化は明示的である必要はありません。objectsの代わりに用語に注意してくださいmember

クラスタイプのメンバーは、明示的に行わない場合、デフォルトで初期化されます。

class A {};
class B
{
   A a;
   int x;
   B()
   {
      //a is initialized here, although you didn't do it explicitly

      //x is not initialized, nor is it mandatory to initialize it
      //but x is not an object
   }
};

もちろん、「必須」という言葉は強い言葉です。初期化は必須でxはありませんが、初期化するまでは何もできません。:)

于 2012-08-22T14:51:25.787 に答える