演算子 new のさまざまな形式を学習するときに遭遇しました (C++ 入門書ではあまり説明されていませんでした)が、この関数呼び出しを使用して実装する方法など、この関数の役割を理解できませんでした placement new
的构造效果, 比如这样two *abc = new(m) two(10);
(この構造は見たのですが)実際、上記の関数も呼び出されます)、およびテスト例は次のとおりです (問題はコメントされています):
ここで問題をさらに単純化して詳しく説明します:
この関数が構築の効果を達成できる理由は、 two *abc = new(m) two(10);
为例, 我没有(或者说不知道怎么在step into进去)能看清具体实现, 虽然我知道抽象出来就是实现了就地构造了two(10)
このオブジェクトです。
同じ効果を得るためにmain()
函数注释处这样直接调用函数的做法来实现就地构造, 我该如何修改参数和传入参数实现 two *abc = new(m) two(10);
を使用したらどうなりますか?
追記:
私の最初の推測の 1 つは、渡される _Where ポインターは既に構築されたオブジェクトへのポインターであるべきだということでしたが、この方法で実装する場合は、既にオブジェクトが存在する必要があり、これは placement new
に反するはずです。
/q/10... @felix Dashi がこの質問に対してすでに回答しています。私はそれを考えて関連コンテンツを検索します
。