arraynew.cpp

来自「Think in C++ 2nd」· C++ 代码 · 共 48 行

CPP
48
字号
//: C13:ArrayNew.cpp

// From Thinking in C++, 2nd Edition

// Available at http://www.BruceEckel.com

// (c) Bruce Eckel 1999

// Copyright notice in Copyright.txt

// Operator new for arrays

#include <new> // Size_t definition

#include <fstream>

using namespace std;

ofstream trace("ArrayNew.out");



class Widget {

  static const int sz = 10;

  int i[sz];

public:

  Widget() { trace << "*"; }

  ~Widget() { trace << "~"; }

  void* operator new(size_t sz) {

    trace << "Widget::new: "

         << sz << " bytes" << endl;

    return ::new char[sz];

  }

  void operator delete(void* p) {

    trace << "Widget::delete" << endl;

    ::delete []p;

  }

  void* operator new[](size_t sz) {

    trace << "Widget::new[]: "

         << sz << " bytes" << endl;

    return ::new char[sz];

  }

  void operator delete[](void* p) {

    trace << "Widget::delete[]" << endl;

    ::delete []p;

  }

};



int main() {

  trace << "new Widget" << endl;

  Widget* w = new Widget;

  trace << "\ndelete Widget" << endl;

  delete w;

  trace << "\nnew Widget[25]" << endl;

  Widget* wa = new Widget[25];

  trace << "\ndelete []Widget" << endl;

  delete []wa;

} ///:~

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?