C++创建对象时加括号与不加括号的区别
2018-01-17 23:13
387 查看
看到一篇文章对创建对象时的集中情况,梳理得很清楚
c++创建对象的语法有—–
1 在栈上创建 MyClass a;
2 在堆上创建加括号 MyClass *a= new MyClass();
3 不加括号 MyClass *a = new MyClass;也是在对上创建,并且有一个自定义类型指针指向myclass
4.—————MyClass a();声明了一个返回值为MyClass类型的无参函数。
result:
reference:http://www.cnblogs.com/wuchanming/p/4313040.html
c++创建对象的语法有—–
1 在栈上创建 MyClass a;
2 在堆上创建加括号 MyClass *a= new MyClass();
3 不加括号 MyClass *a = new MyClass;也是在对上创建,并且有一个自定义类型指针指向myclass
4.—————MyClass a();声明了一个返回值为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; };
//---------------对于调用构造函数 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;
result:
reference:http://www.cnblogs.com/wuchanming/p/4313040.html
相关文章推荐
- C++ 堆上创建对象与栈上创建对象的区别 创建对象时有和无花括号的区别
- C++中创建对象的时候加括号和不加括号的区别
- C++中创建对象的时候加括号和不加括号的区别
- C++中创建对象的时候加括号和不加括号的区别
- C++中创建对象的时候加括号和不加括号的区别
- C++用new和不用new创建类对象区别
- C++中定义对象的语法,带括号与不带括号有什么区别?
- C++用new和不用new创建类对象区别
- C++用new和不用new创建类对象区别
- C++用new创建对象和不用new创建对象的区别解析
- C++用new和不用new创建类对象区别
- C++用new和不用new创建类对象区别
- C++中定义对象的语法,带括号与不带括号有什么区别?
- C++用new和不用new创建类对象区别
- C++用new创建对象和不用new创建对象的区别解析
- C++ new 创建对象加不加括号的区别以及用new创建对象的特点
- C++用new和不用new创建类对象区别
- C++中定义对象的语法,带括号与不带括号有什么区别?
- C++用new和不用new创建类对象区别
- C++之三种创建对象方法的区别