2

重複の可能性:
コンストラクターでの初期化、ベストプラクティス?

私はC++を初めて使用します。

次のクラス定義があるとします。

Class MyClass {
  int a;
  int b;

  //....
}

2つのクラスの建設業者の違いはどれか知りたいです。

public: 
    MyClass(int a, int b) : a(a), b(b) {}

そして(私はJavaスタイルと言うでしょう):

MyClass(int a, int b) {

this->a = a;
this->b = b;
}

私は最初のものがC++でより良いと思います。右?なぜ?

4

1 に答える 1

8

最初のもの(初期化子リストを使用)は、データメンバーを指定された値に初期化します。2つ目は、最初にそれらを初期化し、次に値を割り当てます。それが最初のものが好まれる理由です。そこには不要な代入演算はありません。

これは、データメンバーの構築や割り当てに費用がかかる場合に特に重要です。また、一部のタイプはデフォルトで構築できないため、初期化子リストの使用が必須になることにも注意してください。

于 2012-05-02T16:26:26.473 に答える