C++中创建对象的时候加括号和不加括号的区别
2017-10-19 00:10
447 查看
C++中创建对象的时候加括号和不加括号的区别
[b]前提:类中有无参构造(默认/自定义)[/b]在栈上创建 MyClass a;
在堆上创建加括号 MyClass *a= new MyClass();
#include <iostream> class MyClass { public: MyClass() { std::cout << "Hello MyClass!" << std::endl; } MyClass(int i):num(i) { std::cout << "Hello MyClass!------int" << std::endl; } void MyMethod() { std::cout << "输出成员num: " <<num << std::endl; } private: int num; }; int main() { //---------------对于调用构造函数 MyClass c1;//表示使用不带参数的构造函数,或者有默认参数值的构造函数。 MyClass c2();//不会调用无参构造函数,各种情况下该处是声明一个返回值为MyClass类型的函数而已 MyClass c3(1);//调用参数为int的构造函数 /*---------------对于new关键字加括号和不加括号的区别--- 1.对于自定义类型来说没有区别,都是使用默认构造函数 2.对于原子(内置)类型来说加括号会初始化 */ std::cout<<std::endl; MyClass *c4 = new MyClass(); c4->MyMethod(); MyClass *c5 = new MyClass(1); c5->MyMethod(); MyClass *c6 = new MyClass; c6->MyMethod(); //原子(内置)类型 std::cout<<std::endl; int *pint1 = new int(1); int *pint2 = new int(); int *pint3 = new int; std::cout<<*pint1<<" "<<*pint2<<" "<<*pint3<<std::endl; return 0; }
结论: new 关键字创建对象时 对于内置类型:加括号会初始化,不加括号不初始化;对于自定义类型,都会调用默认构造函数,加不加括号没区别。
相关文章推荐
- C++中创建对象的时候加括号和不加括号的区别
- C++中创建对象的时候加括号和不加括号的区别
- C++中创建对象的时候加括号和不加括号的区别
- C++中new 一个对象的时候加括号和不加括号的区别
- C++ 堆上创建对象与栈上创建对象的区别 创建对象时有和无花括号的区别
- C++创建对象时加括号与不加括号的区别
- C++中new 一个对象的时候加括号和不加括号的区别
- C++创建类对象的三种方式区别
- C++之三种创建对象方法的区别
- 关于创建对象时带括号与不带括号的区别
- C++用new和不用new创建类对象区别
- C++用new和不用new创建类对象的区别
- C++用new和不用new创建类对象区别
- C++用new来创建对象和非new来创建对象的区别
- C++创建对象的方式和区别
- C++用new和不用new创建类对象区别
- C++用new和不用new创建类对象区别(…
- C++用new和不用new创建类对象区别
- c++对象创建后面是否括号
- C++ 用new和不用new创建类对象的区别