Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class List
- {
- public:
- List() { std::cout << "List constructed\n"; }
- ~List() { std::cout << "List Destructed\n"; }
- };
- class Stack
- {
- List* storage;
- public:
- Stack() : storage{ new List } { std::cout << "Stack constructed\n"; }
- ~Stack() { delete storage; std::cout << "Stack Destructed\n"; }
- };
- class Hummer
- {
- public:
- Hummer() { std::cout << "Hummer constructed\n"; }
- ~Hummer() { std::cout << "Hummer Destructed\n"; }
- void use() { std::cout << "Boom!\n"; }
- };
- class Master
- {
- Hummer& tool;
- public:
- Master(Hummer& h) : tool{h} { std::cout << "Master constructed with tool\n"; }
- //Master() : tool{ nullptr } { std::cout << "Master constructed without tool\n"; }
- ~Master() { std::cout << "Master Destructed\n"; }
- //void useTool() { if (tool) { tool->use(); } else { std::cout << "NO TOOLS\n"; } }
- void useTool() { tool.use(); }
- };
- int main()
- {
- //Stack s;
- Hummer h;
- {
- Master m{h};
- m.useTool();
- }
- std::cout << "Hummer is still alive! :)\n";
- h.use();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement