用于在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