美文网首页
malloc 与 new 创建对象的区别

malloc 与 new 创建对象的区别

作者: LF_Lufei | 来源:发表于2021-12-09 19:36 被阅读0次

建一个person 类(这里以结构体代替)

struct person{
    int m_age;
    person(){
        std::cout << "person::person()" << std::endl;
    }
    void run(){
        std::cout << "person::run()"<< m_age << std::endl;
    }
};

同时以malloc 方式新建一个对象

 person *mp = (person *)malloc(sizeof(person));
    mp->m_age = 20;
    mp->run();

打印结果为

image.png
可以看到构造函数并没有执行

new创建一个对象

person *np = new person;
    np->m_age = 10;
    np->run();

打印结果为

Hello, World!
person::person()
person::run()10
Program ended with exit code: 0

可以看到构造函数被执行

结论:

malloc 创建对象不会执行构造函数
new 创建对象会执行构造函数

相关文章

网友评论

      本文标题:malloc 与 new 创建对象的区别

      本文链接:https://www.haomeiwen.com/subject/svzffrtx.html