2012-03-03 5 views
0

可能性の重複:
Do the parentheses after the type name make a difference with new?
What do the following phrases mean in C++: zero-, default- and value-initialization?C++ベクトルinitilization

アイブ氏は何の問題もなくベクトルを使用しますが、私はまだそれについて質問があります。

vector<int>* v2 = new vector<int>(); 

私が何をするか()知っているが、いただきました!違い:私は常にこのようなコードを使用し 、そう

vector<int>* v1 = new vector<int>; 

は、私が使用することができますか? v1では、ベクトルは整数を初期化しますか?

+7

なぜ 'new'を使用していますか? 'ベクトル v1;の何が問題なの? –

答えて

1

最初にあなたの質問:newはデフォルトのコンストラクタを呼び出しますが、これを "手動で"行う必要はありません。 しかし、C++でできるだけ頻繁に値型を使用するようにしてください。スコープを離れるときにデストラクタが自動的に呼び出されるため、高速であるだけでなく、より簡単で安全です。 は、だからあなたが本当にヒープが必要な場合は、

std::vector<int> v; // Calls default constructor 

を書くなどのshared_ptrとunique_ptrを、あなたが削除呼び出すことを忘れることができないこの方法としてスマートポインタを使用してみてください。 (そして削除もデストラクタを呼び出すので、手動で行う必要はありません)

0

どちらのステートメントも同じです。どちらの場合も、パラメータを持たないコンストラクタが呼び出されます。