C++中创建对象的时候加括号和不加括号的区别
2014-04-01 15:26
162 查看
c++创建对象的语法有-----
1 在栈上创建 MyClass a;
2 在堆上创建加括号 MyClass *a= new MyClass();
3 不加括号 MyClass *a = new MyClass;
4.---------------MyClass a();声明了一个返回值为MyClass类型的无参函数。
结果:
结论:new 关键字创建对象时 对于内置类型:加括号会初始化,不加括号不初始化;对于自定义类型,都会调用默认构造函数,加不加括号没区别。
1 在栈上创建 MyClass a;
2 在堆上创建加括号 MyClass *a= new MyClass();
3 不加括号 MyClass *a = new 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; }; 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++中new 一个对象的时候加括号和不加括号的区别
- C++ 堆上创建对象与栈上创建对象的区别 创建对象时有和无花括号的区别
- C++创建对象时加括号与不加括号的区别
- C++用new创建对象和不用new创建对象的区别解析
- C++用new和不用new创建类对象区别 内存
- C++用new和不用new创建类对象区别
- C++用new来创建对象和非new来创建对象的区别
- 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创建类对象区别