建一個(gè)person 類(這里以結(jié)構(gòu)體代替)
struct person{
int m_age;
person(){
std::cout << "person::person()" << std::endl;
}
void run(){
std::cout << "person::run()"<< m_age << std::endl;
}
};
同時(shí)以malloc 方式新建一個(gè)對(duì)象
person *mp = (person *)malloc(sizeof(person));
mp->m_age = 20;
mp->run();
打印結(jié)果為
可以看到構(gòu)造函數(shù)并沒有執(zhí)行
以new創(chuàng)建一個(gè)對(duì)象
person *np = new person;
np->m_age = 10;
np->run();
打印結(jié)果為
Hello, World!
person::person()
person::run()10
Program ended with exit code: 0
可以看到構(gòu)造函數(shù)被執(zhí)行
結(jié)論:
malloc 創(chuàng)建對(duì)象不會(huì)執(zhí)行構(gòu)造函數(shù)
new 創(chuàng)建對(duì)象會(huì)執(zhí)行構(gòu)造函數(shù)