⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arraynew.cpp

📁 Think in C++ 第二版源码
💻 CPP
字号:
//: 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -