1

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

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;
}
4

1 回答 1

2

您可以使用构造函数初始化列表:

Foo::Foo(int n) : _a(new double[n]) {}

如果您需要在构造函数的主体中设置托管数组,那么

Foo::Foo()
{
  int n = someCalculation();
  _a.reset(new double[n]);
}
于 2013-07-11T06:41:02.560 回答