huoyahuoya 2017-08-10 08:31 采纳率: 0%
浏览 1087
已采纳

类类型对象定义时,三种方式的区别

#include
using namespace std;
class demo {
public:
demo() {
cout << "this is INIT!" << endl;
}
void print() {
cout << "hello" << endl;
}
};

int main() {
(1)demo a;
(2)demo *b = new demo;
(3)demo *c = new demo();
a.print();
b->print();
system("pause");
return 0;
}

这三种有啥区别啊

  • 写回答

2条回答 默认 最新

  • 卖太妃糖的古尔丹 2017-08-10 08:50
    关注

    第一种在栈中开辟空间,创建对象
    第二种和第三种都是在堆中开辟空间
    加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数
    对于有构造函数的类,不论有没有括号,都用构造函数进行初始化;如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,而加了括号的new会在分配内存的同时初始化为0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?