3

Bar というクラスがあり、このクラス Bar には Foo (クラス) 型のオブジェクトがあります。クラス Bar は、x、y、z の 3 つのパラメータを取ります。Foo は、y と z の 2 つのパラメーターを取ります。

現在、私はこれをやっています:

class Bar {
 public:
  Bar(int x, int y, int z) { 
      foo = new Foo(y, z);
      do something with x;
  }

 private:
  Foo * foo;
};

コロンを使用してこれを行う別の方法を本で見たのを覚えていますが、正確な方法は覚えていません。

このようなことを行う標準的または通常の方法は何ですか?

4

3 に答える 3

6

初期化子リストを使用し、動的割り当てを回避します。

class Bar {
public:
    Bar(int x, int y, int z) : foo(y, z) {}
private:
    Foo foo;
};
于 2013-03-22T13:20:57.357 に答える
2
class Bar {
 public:
  Bar(int x, int y, int z) : foo(y, z) { 
      do something with x;
  }

 private:
  Foo foo;
};
于 2013-03-22T13:20:47.040 に答える
0

あなたの当惑する行は

... 
Bar(int x, int y, int z) : foo(new Foo(y,z)) { 
... 
private: 
Foo* foo; 
...

ポインターを使用しない他の回答が表示されます。しかし、正しいのはこれのはずです。

于 2013-03-22T13:44:26.770 に答える