建一个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();
打印结果为
可以看到构造函数并没有执行
以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 创建对象会执行构造函数
网友评论