用于在C ++中实例化对象的不同方法

这有什么区别:

Myclass *object = new Myclass();

Myclass object = new Myclass();

我看到很多C ++库像wxWidgets,OGRE等使用第一种方法...为什么?


第二个错误!

你可以使用

MyClass object;

那可行。

现在,关于如何在这两种可能性之间做出选择,主要取决于对象应该生存多久。 看到这里有一个彻底的答案。


Myclass *object = new Myclass(); //object is on the heap
Myclass object; //object is on the stack

如果您计划在很长一段时间内使用这些对象,并且您在堆栈上创建对象的时间较短(或范围),则可以在堆上创建对象。


你的第一行是100%正确的。 不幸的是,你不能用c ++中的第二行创建对象。 有两种方法可以在c ++中创建/创建一个对象。

第一个是:

MyClass myclass; // if you only need to call the default constructor    
MyClass myclass(12); // if you need to call constructor with parameters*

第二个是:

MyClass *myclass = new MyClass();// if you only need to call the default constructor
MyClass *myclass = new MyClass(12);// if you need to call constructor with parameters

在c ++中,如果您使用new关键字,则对象将存储在堆中。 如果您长时间使用此对象,并且如果使用第一种方法,它将被存储在堆栈中,这非常有用。 它只能使用很短的时间。 注意:如果你使用new关键字,记住它会返回指针值。 你应该用*声明名字。 如果使用第二种方法,它不会删除堆中的对象。 您必须使用delete关键字自己delete

delete myclass;
链接地址: http://www.djcxy.com/p/13793.html

上一篇: Different methods for instantiating an object in C++

下一篇: Memory allocation in c++