美文网首页
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