このdocumentは、次のテキストとコードが含まれています:誰かがこのMSテキストが伝えようとしていることを説明できますか?
あなたはnew演算子の配置新しいフォーム、割り当てのサイズに加えて、引数を持つフォームを使用している場合、コンパイラはの配置形式をサポートしていません。コンストラクタが例外をスローする場合は、演算子を削除します。例:上述した第2のコメント行で表現したよう
// expre_new_Operator2.cpp
// C2660 expected
class A {
public:
A(int) { throw "Fail!"; }
};
void F(void) {
try {
// heap memory pointed to by pa1 will be deallocated
// by calling ::operator delete(void*).
A* pa1 = new A(10);
} catch (...) {
}
try {
// This will call ::operator new(size_t, char*, int).
// When A::A(int) does a throw, we should call
// ::operator delete(void*, char*, int) to deallocate
// the memory pointed to by pa2. Since
// ::operator delete(void*, char*, int) has not been implemented,
// memory will be leaked when the deallocation cannot occur.
A* pa2 = new(__FILE__, __LINE__) A(20);
} catch (...) {
}
}
int main() {
A a;
}
は、コードが
C2660を発する:「演算子新しい」:いいえオーバーロードされた関数は3つの引数
コンパイルエラーを修正するために '#include'を追加してください。 –
''を含み、 'main()'の 'A a;'を 'F();に変更しましたが、コードはまだC2660を出力します。 –
Belloc