选择类对象字段的构造函数
问题描述:
我有一个名为Foo的类,它有另一个名为Bar的类作为字段。 Bar只有一个带参数的构造函数。如何选择带Bar参数的构造函数(不存储Bar而不是Bar,并调用new)?选择类对象字段的构造函数
foo.h中
class Foo
{
private:
Bar bar;
};
Bar.h
class Bar
{
public:
Bar(int arbitraryArg);
};
Foo.cpp中
Foo::Foo()
: bar(bar(1))
{}
我想做的事情上面,因为我听说,这通常是不好将指针存储为字段,除非绝对需要避免管理内存,所以我想避免这样的事情:
foo.h中
class Foo
{
private:
Bar* bar;
public:
Foo();
}
Foo.cpp中
Foo::Foo()
: bar(NULL)
{
bar = new Bar(1);
}
答
如此接近。
Foo::Foo()
: bar(1)
{}
您还需要声明构造Foo()
在类Foo
的定义(和所有的类定义在年底需要一个;
)。
答
你看起来几乎不错 - 但你需要调用构造函数,而不是参数或变量名称。
更改为:
:bar(Bar(1)) {
注资本B.
+0
这个答案也可以,也是我原本以为我必须做的。另一个答案比较短,但这对初学者来说可能更清楚(像我一样) – brandonto 2014-09-06 04:14:17
我接受这个答案,因为它是第一个和它的工作。这也是一个很酷的速记方式。 – brandonto 2014-09-06 04:13:20