C++的STL中关于new的用法,求帮忙!
巴扎黑
巴扎黑 2017-04-17 15:39:53
0
1
675

以下是STL源码中的一段:

template <class _T1>
inline void _Construct(_T1* __p) {
 new ((void*) __p) _T1();
}

平时看见的new,是类似这样的用法

 _T1 * __p;
 __p=new _T1;

new ((void*) __p) _T1();

__p=new _T1;
等同吗?
而_T1()中的()又有什么特别含义吗?希望有人能帮忙解答!

巴扎黑
巴扎黑

全員に返信(1)
小葫芦

new(p) T は新規の配置です。その機能は、p が指す記憶領域上にオブジェクト T を構築することです。通常、new はまずストレージ領域を適用し、次に適用されたストレージ領域上にオブジェクトを構築します。

リーリー

T() は値の初期化であり、T と同等ではありません。この関数は、デフォルトのコンストラクターを通じてオブジェクトを初期化するか、型 T に従ってオブジェクトを 0 で初期化します。

リーリー

追記: 以前に間違えました。int a(); はコンパイラによって変数宣言ではなく関数宣言に解析されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!