美文网首页程序员
[C++进阶]成对使用new和delete时要采用相同形式

[C++进阶]成对使用new和delete时要采用相同形式

作者: 小鱼号的代码日记 | 来源:发表于2020-09-12 13:39 被阅读0次

前言:

  • 如果你在new表达式中使用[],
  • 必须在相应的delete表达式中也使用[]
  • 如果你在new表达式中不使用[],
  • 一定不要在相应的delete表达式中使用[]

注意:

  • 最好尽量不要对数组形式做typedef动作,
  • C++标准库中含有string vector等templates
  • 可将数组的需求降至几乎为零。
#include <QCoreApplication>
#include <iostream>
using namespace std;

class obj
{
public:
  obj()
  {
    cout << "obj()\n";
  }

  ~obj()
  {
    cout << "~obj()\n";
  }
};

typedef obj objArray[5];

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
     obj* pObj = new obj[5];
     delete pObj;
     cout << "%%%%%%%%%%%%%%%%%%%%%\n";

     obj* pObj2 = new obj[5];
     delete[] pObj2;
     cout << "%%%%%%%%%%%%%%%%%%%%%\n";

     obj* pObj3 = new objArray;
     delete pObj3;
     cout << "%%%%%%%%%%%%%%%%%%%%%\n";

     obj* pObj4 = new objArray;
     delete[] pObj4;
     cout << "%%%%%%%%%%%%%%%%%%%%%\n";

    return a.exec();
}
/*****
内容选自:
effectivre c++
改善程序与设计的55个具体做法
*****/
newdelete.JPG

相关文章

网友评论

    本文标题:[C++进阶]成对使用new和delete时要采用相同形式

    本文链接:https://www.haomeiwen.com/subject/pedwektx.html