3

私は C/C++ に非常に慣れていないため、メソッドが何と呼ばれているのかわかりません。しかし、それが私がここで答えを見つけようとしている理由です。例をお見せしましょう

MyClass::MyClass() : valueOne(1), valueTwo(2)
{
      //code
}

valueOne と valueTwo は、本体の外部に値が割り当てられるクラス プロパティであり、どのメソッドが呼び出され、なぜこのように行われるのか。なぜこのようにしないのですか

MyClass::MyClass()
{
      valueOne = 1;
      valueTwo = 2
      //code
}

誰かが私を助けることができれば、それは素晴らしいことです。

4

5 に答える 5

7

これは初期化リストです。コンストラクターの後に初期化子リストを使用して、メンバー変数を初期化できます。

デフォルトでは、コンストラクターは、デフォルトのコンストラクターを呼び出すことにより、メンバー変数であるオブジェクトを自動的に作成します。初期化子リストを使用することにより、他のコンストラクターを使用するように指定できます。メンバー変数に引数のないコンストラクターがない場合は、初期化子リストを使用する必要があります。

于 2010-04-14T03:12:33.937 に答える
2

初期化リスト(前者のスタイル)は、通常、効率とパフォーマンスの理由から好まれます。個人的には、コンストラクター自体の複雑なロジックから単純な初期化を分離するため、コードの可読性の理由からもそれらを好みます。

于 2010-04-14T03:19:17.693 に答える
1

これは初期化リストと呼ばれます。これは主に、パフォーマンス(より大きなオブジェクトを使用)または一貫性(のような組み込みタイプを使用int)のために行われます。

于 2010-04-14T03:12:34.323 に答える
1

イニシャライザリストのメンバーを初期化することをお勧めします。あなたの場合は問題ではありませんが、2番目のコードフラグメントで行ったようにint&を初期化することはできません。これは、基本クラスのコンストラクターにも引数を渡すことができる唯一の場所です。

于 2010-04-14T03:16:03.817 に答える
0

また、BASEクラスのデータフィールドまたはメンバー関数を参照するためにのみ使用される場合、このポインターは初期化子リストでアクセス可能であることに注意してください。

于 2010-04-14T04:09:48.667 に答える