malloc 与 new 创建对象的区别

建一个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 创建对象会执行构造函数

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容