← Back to Question List
C++ Code Walkthrough #67
Who Deletes the Engine?
📄 Code
Read carefully — what does this print?1#include <iostream>2using namespace std;34class Engine {5public:6 Engine() { cout << "Engine built" << endl; }7 ~Engine() { cout << "Engine destroyed" << endl; }8};910class Garage {11 Engine* m_engine;12public:13 Garage() {14 m_engine = new Engine();15 cout << "Garage open" << endl;16 }17 ~Garage() {18 delete m_engine;19 cout << "Garage closed" << endl;20 }21 Engine* engine() const { return m_engine; }22};2324class Mechanic {25 Engine* m_engine;26public:27 Mechanic(Engine* e) : m_engine(e) { cout << "Mechanic hired" << endl; }28 ~Mechanic() { cout << "Mechanic leaves" << endl; }29};3031int main() {32 Garage g;33 {34 Mechanic m1(g.engine());35 Mechanic m2(g.engine());36 }37 cout << "end" << endl;38 return 0;39}