CJCoding With Joseph
15free / daySign inCreate account
← Back to Question List
C++ Code Walkthrough #67

Who Deletes the Engine?

mediumPointers

📄 Code

Read carefully — what does this print?
1#include <iostream>
2using namespace std;
3 
4class Engine {
5public:
6 Engine() { cout << "Engine built" << endl; }
7 ~Engine() { cout << "Engine destroyed" << endl; }
8};
9 
10class 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};
23 
24class Mechanic {
25 Engine* m_engine;
26public:
27 Mechanic(Engine* e) : m_engine(e) { cout << "Mechanic hired" << endl; }
28 ~Mechanic() { cout << "Mechanic leaves" << endl; }
29};
30 
31int main() {
32 Garage g;
33 {
34 Mechanic m1(g.engine());
35 Mechanic m2(g.engine());
36 }
37 cout << "end" << endl;
38 return 0;
39}

🎯 Your Answer