두 가지 버전이 있습니다.
wsk = new unsigned int;
wsk = new unsigned int();
배열에서도 작동합니다.
wsa = new unsigned int[5];
wsa = new unsigned int[5]();
아래 의견에 대한 답변.
음 ... new unsigned int[5]()
정수 를 0으로 만드는 것이 확실 합니까?
분명히 그렇습니다 :
[C ++ 11 : 5.3.4 / 15] : T 유형의 개체를 생성하는 new-expression은 다음과 같이 해당 개체를 초기화합니다. new-initializer가 생략되면 개체는 default-initialized (8.5)입니다. 초기화가 수행되지 않으면 개체의 값이 결정되지 않습니다. 그렇지 않으면 새 초기화 프로그램은 직접 초기화를위한 8.5의 초기화 규칙에 따라 해석됩니다.
#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";
}
결과 :
> 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
>