我应该使用一个c ++类,有或没有“新”?

我应该什么时候使用指针,什么时候不用? 最好的方法是什么? 我必须在程序结束时删除指针的猫对象吗?

例:

cat piki;
piki.miao();
cat *piki2 = new cat();
piki2->miao();

当前范围关闭时, piki对象将被自动删除。

必须明确删除piki2

delete piki2;

尽可能避免使用new (即在堆上)创建对象,因为您必须自己进行内存管理(或者至少需要使用智能指针)。 如果你在堆栈中分配对象(即cat piki; ),当piki超出范围时,为cat对象分配的内存会自动释放。 这不会发生与piki2 ,你需要delete piki2;delete piki2; 释放内存。


创建或不创建新的ojbect取决于您使用该对象的位置。 如果你在一个函数或块中使用它,你的类的一个对象可以被创建而不需要新的对象,这样一旦你的对象超出了作用域,析构函数就会自动被调用。

如果你希望你的对象在多个方法中使用,或者你想从一个函数中返回对象,那么你需要使用new来创建对象,并且确保你正确地删除它。

链接地址: http://www.djcxy.com/p/82483.html

上一篇: what should i use with a c++ class, with or without "new"?

下一篇: Heap corruption C++