#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;
}
这三种有啥区别啊
第一种在栈中开辟空间,创建对象
第二种和第三种都是在堆中开辟空间
加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数
对于有构造函数的类,不论有没有括号,都用构造函数进行初始化;如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,而加了括号的new会在分配内存的同时初始化为0
http://blog.csdn.net/lx627776548/article/details/52067572 详细的解析都在这里