Rumah > Soal Jawab > teks badan
以下是STL源码中的一段:
1 2 3 4 |
|
平时看见的new,是类似这样的用法
1 2 |
|
new ((void*) __p) _T1();
和__p=new _T1;
等同吗?
而_T1()中的()又有什么特别含义吗?希望有人能帮忙解答!
高洛峰2017-04-17 15:41:53
new(p) T
是placement new。作用是在p指向的存储区上构造对象T。而一般的new会先申请存储区,然后在申请到的存储区上构造对象。
1 2 3 |
|
T()
是值初始化,不等同于T
。作用是依据类型T通过默认构造函数初始化对象或0初始化对象。
1 2 |
|
PS:之前犯了个错误,int a();
会被编译器解析成函数声明,而非变量声明。