#include /* Einfaches Beispiel für den Objektlebenszyklus, insbesondere von aggregierten * Objekten */ class X { public: X() { std::cout << "X()" << std::endl; } ~X() { std::cout << "~X()" << std::endl; } }; class Y { public: Y() { std::cout << "Y()" << std::endl; } ~Y() { std::cout << "~Y()" << std::endl; } X x; }; int main(void) { { X x; } std::cout << std::endl; { Y y; } std::cout << std::endl; { Y* p = new Y; } } /* Skizze, wie man das Freigeben einer Sperre mittels RAII umsetzt. */ #if 0 class LockHolder { public: LockHolder(Lock* l) : l_(l) { lock(l); } ~LockHolder() { unlock(l_); } private: Lock* l_; }; void f(Lock* l) { LockHolder hold(l); /* .... */ if (bad) return; /* ... */ } #endif