2012-02-05 92 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有一個默認的構造函數,所以它們的初始化是相同的。但是,如果沒有默認構造函數,它們將以不同的方式進行初始化。