构造函数问题

[复制链接]
1330|3
 楼主| 秋天落叶 发表于 2013-12-31 20:13 | 显示全部楼层 |阅读模式
#include <iostream>
using namespace std;

class Info
{
public:
    Info() : m_iNumber(2)
    {
         
    }
     
    Info(int iNumber) : m_iNumber(iNumber)
    {
        new (this)Info();
    }
     
    int m_iNumber;   
     
};

int main(int argc, char *argv[])
{
    Info* pInfo = new Info(123);
    std::cout<<pInfo->m_iNumber;
    return 0;
}
请问new (this)Info()这种语法是什么意思。虽然知道是调用无参的构造函数,但是(this)这种语法真没见过 = =
pkat 发表于 2013-12-31 20:30 | 显示全部楼层
ew跟malloc的区别

new先分配内存,然后调用构造函数

placement new

将new分成了2步,第二步就是调用构造函数 即 new(*value) 类();
火箭球迷 发表于 2013-12-31 20:39 | 显示全部楼层
placement new:

#include <new>

pTest = new (pTest) CTest(); 等价于 pTest->CTest();
sinadz 发表于 2013-12-31 20:49 | 显示全部楼层
pkat 发表于 2013-12-31 20:30
ew跟malloc的区别

new先分配内存,然后调用构造函数

可以试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:落叶很美

138

主题

3044

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部