我最近开始使用智能指针。
如果我是正确的,则声明智能指针:

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]);
}

10-01 06:49
查看更多