2012-02-05 67 views
1

可能重复:
Do the parentheses after the type name make a difference with new?正在初始化智能指针

请告诉我下面的initialisations之间的区别?在教程中,它和#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

看到这个很好的参考:http://stackoverflow.com/questions/620137/do-the-parentheses-after-the-type-name-make-a-difference-with-new – JRL 2012-02-05 02:36:36

回答

1

智能指针在这里没有任何区别。两个智能指针都以相同的方式初始化,指针指向X。区别在于如何初始化X。如果有差异,其差异取决于如何定义XThis答案对不同情况下发生的情况有很好的描述。在这种情况下,因为X有一个默认的构造函数,所以它们的初始化是相同的。但是,如果没有默认构造函数,它们将以不同的方式进行初始化。