Bruce Eckel's Thinking in C++, 2nd Ed | Contents | Prev | Next |
//: C13:Malclass.cpp // Malloc with class objects // What you'd have to do if not for "new" #include <cstdlib> // Malloc() & free() #include <cstring> // Memset() #include <iostream> #include "../require.h" using namespace std; class Obj { int i, j, k; enum { sz = 100 }; char buf[sz]; public: void initialize() { // Can't use constructor cout << "initializing Obj" << endl; i = j = k = 0; memset(buf, 0, sz); } void destroy() { // Can't use destructor cout << "destroying Obj" << endl; } }; int main() { Obj* obj = (Obj*)malloc(sizeof(Obj)); require(obj != 0); obj->initialize(); // ... sometime later: obj->destroy(); free(obj); } ///:~
//: C13:Newdel.cpp // Simple demo of new & delete #include <iostream> using namespace std; class Tree { int height; public: Tree(int height) { height = height; } ~Tree() { cout << "*"; } friend ostream& operator<<(ostream& os, const Tree* t) { return os << "Tree height is: " << t->height << endl; } }; int main() { Tree* t = new Tree(40); cout << t; delete t; } ///:~