3

我有一个名为 Bar 的类,在这个类 Bar 中有一个 Foo 类型的对象(一个类)。类 Bar 有 3 个参数,x、y 和 z。Foo 有 2 个参数,y 和 z。

目前我正在这样做:

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 回答