正在初始化智能指针



可能重复:
类型名称后面的括号与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
}

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

相关内容

  • 没有找到相关文章

最新更新