我最近开始使用智能指针。 如果我是正确的,则声明智能指针:
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;
}
答案 0 :(得分:2)
您可以使用构造函数初始化列表:
Foo::Foo(int n) : _a(new double[n]) {}
如果您需要在构造函数的主体中设置托管数组,那么
Foo::Foo()
{
int n = someCalculation();
_a.reset(new double[n]);
}