可能重复:
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
}
答案 0 :(得分:1)
智能指针在这里没有任何区别。两个智能指针都以相同的方式初始化,指针指向X
。不同之处在于X
的初始化方式。如果存在差异,则差异取决于X
的定义方式。 This回答很好地描述了在不同情况下会发生什么。在这种情况下,由于X
具有默认构造函数,因此它们的初始化方式相同。但是,如果没有默认构造函数,它们将以不同方式初始化。