class Test { public: Test() {} Test(int a) {} }
1、栈上创建对象 1.1 无括号 Test a; // 调用默认构造函数,栈上分配内存创建对象
1.2 有括号 Test a(); // 无任何意义,声明一个返回值为Test对象的无参函数
1.3 有括号+参数 Test a(2); // 调用构造函数Test(int a),栈上分配内存创建对象
2、堆上创建对象 2.1 无括号 Test *a = new Test; // 调用默认构造函数(若由编译器生成则成员不初始化),堆上分配内存创建对象
2.2 有括号 Test *a = new Test(); // 调用默认构造函数(若由编译器生成则成员初始化),堆上分配内存创建对象
2.3 有括号+参数 Test *a = new Test(2); // 调用构造函数Test(int a),堆上分配内存创建对象
2.4 系统内置类型 new int;// 分配内存,未初始化 new int();// 分配内存,初始化为0 new int(2);// 分配内存,初始化为2
|
请发表评论