打印

构造函数问题

[复制链接]
767|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

粉丝