Es gibt zwei Versionen:
wsk = new unsigned int;
wsk = new unsigned int();
Funktioniert auch für Arrays:
wsa = new unsigned int[5];
wsa = new unsigned int[5]();
Als Antwort auf den Kommentar unten.
Ähm ... bist du sicher, dass new unsigned int[5]()
die ganzen Zahlen Nullen sind?
Anscheinend schon:
[C ++ 11: 5.3.4 / 15]: Ein neuer Ausdruck, der ein Objekt vom Typ T erstellt, initialisiert dieses Objekt wie folgt: Wenn der neue Initialisierer weggelassen wird, wird das Objekt standardmäßig initialisiert (8.5). Wenn keine Initialisierung durchgeführt wird, hat das Objekt einen unbestimmten Wert. Andernfalls wird der Neuinitialisierer gemäß den Initialisierungsregeln von 8.5 für die Direktinitialisierung interpretiert.
#include <new>
#include <iostream>
int main()
{
unsigned int wsa[5] = {1,2,3,4,5};
unsigned int* wsp = new (wsa) unsigned int[5]();
std::cout << wsa[0] << "\n";
std::cout << wsa[1] << "\n";
std::cout << wsa[2] << "\n";
std::cout << wsa[3] << "\n";
std::cout << wsa[4] << "\n";
}
Ergebnisse:
> g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.2.0
Thread model: posix
> g++ t.cpp
> ./a.out
0
0
0
0
0
>