将参数传递给类的构造函数,该类是另一个类的成员

时间:2013-03-22 13:18:56

标签: c++ class parameters constructor

我上课叫Bar, 在这个类Bar中有一个类型为Foo的对象(一个类)。 Class 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;
};

我记得在一本书中看到另一种使用冒号的方法,但我不记得究竟是怎么回事。

做这样的事情的标准或通常方式是什么?

3 个答案:

答案 0 :(得分:5)

使用initializer list并避免动态分配:

class Bar {
public:
    Bar(int x, int y, int z) : foo(y, z) {}
private:
    Foo foo;
};

答案 1 :(得分:2)

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

 private:
  Foo foo;
};

答案 2 :(得分:0)

你的困惑线应该是

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

我看到其他答案不使用指针。但是正确的应该是这个。