初始化智能指针

时间:2012-02-05 02:29:50

标签: c++ smart-pointers

  

可能重复:
  Do the parentheses after the type name make a difference with new?

以下初始化之间的区别是什么?在本教程中,它与#1的情况一样,但是如果我使用下面的#2方式会有什么不同吗?

struct X
{
    X() {}
    int x;
};

int main()
{
    std::auto_ptr<X> p1(new X);   // #1
    std::auto_ptr<X> p2(new X()); // #2
}

1 个答案:

答案 0 :(得分:1)

智能指针在这里没有任何区别。两个智能指针都以相同的方式初始化,指针指向X。不同之处在于X的初始化方式。如果存在差异,则差异取决于X的定义方式。 This回答很好地描述了在不同情况下会发生什么。在这种情况下,由于X具有默认构造函数,因此它们的初始化方式相同。但是,如果没有默认构造函数,它们将以不同方式初始化。