除了在不调用new的情况下定义变量之外的其他地方,如何调用c ++构造函数?

时间:2011-11-01 02:15:08

标签: c++ class constructor

我有一个这样的课程设置:

class Foo {
  Foo();    

  private:
     Bar m_bar;
}

这是它自己的头文件中的类定义,现在在源文件中使用它我有构造函数,我尝试这样做:

Foo::Foo() {
  m_bar("parameters for the Bar constructor");
}

然而,这不起作用,并给我一个错误。我可以使m_bar成为指针,然后在Foo的构造函数中执行此操作:

m_bar = new Bar("parameters here");

然而,这使得m_bar成为一个指针而我不希望这样。

我对C ++类和指针不是最好的,所以可以解释一种方法让我在Foo类中定义m_bar但在其他地方定义构造函数,或者在这种情况下更好地使m_bar成为指针为什么?虽然我宁愿不把它作为一个指针(因为我不太了解指针),如果这是最好的方法,那么我宁愿那样做,但我仍然希望有人解释为什么是最好的方法(如果是)。

3 个答案:

答案 0 :(得分:3)

是的,使用初始化列表语法:

Foo::Foo() : 
  m_bar("parameters for the Bar constructor")
{
}

答案 1 :(得分:1)

您需要使用初始化列表:

Foo::Foo() :
m_bar("and you ought to check out a good C++ book :)")
{
    // Book list: http://tinyurl.com/so-cxxbooks
}

答案 2 :(得分:0)

如果我理解正确,您可以使用构造函数initialization list来执行此操作。