2012-02-05 12 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

答えて

1

ここでスマートポインタは違いはありません。両方のスマートポインタは同じ方法で初期化され、ポインタはXになります。違いはXがどのように初期化されるかです。差異がある場合、その差異はどのようにXが定義されているかによって異なります。 This答えには、さまざまな場合に起こることの優れた説明があります。この場合、Xにはデフォルトのコンストラクタがあるため、同じコンストラクタが初期化されます。しかし、デフォルトのコンストラクタがなければ、それらは異なって初期化されるでしょう。

関連する問題