我最近开始使用智能指针。
如果我是正确的,则声明智能指针:
shared_array<double> a(new double[n]);
但是,如果将a封装在类中怎么办?
目前,我正在按照以下步骤进行操作,但这似乎非常丑陋:
头文件:
class Foo {
public:
Foo(int size);
shared_array<double> _a;
};
源文件
Foo::Foo(int n){
shared_array<double> p (new double[n]);
_a = p;
}
最佳答案
您可以使用构造函数初始化列表:
Foo::Foo(int n) : _a(new double[n]) {}
如果您需要在构造函数的主体中设置托管数组,则
Foo::Foo()
{
int n = someCalculation();
_a.reset(new double[n]);
}