What is the output of the following code? #include int count = 0; class obj { public: obj() { count++; } ~obj() { count--; } }; int main() { obj A, B, C, D, E; obj F; { obj G; } std::cout << count; return 0; }
What is the output of the following code? #include int count = 0; class obj { public: obj() { count++; } ~obj() { count--; } }; int main() { obj A, B, C, D, E; obj F; { obj G; } std::cout << count; return 0; }
Trả lời:
Đáp án đúng: C
Đoạn code C++ này sử dụng một biến toàn cục `count` để theo dõi số lượng đối tượng `obj` đang tồn tại. Constructor của lớp `obj` tăng `count` lên 1, và destructor giảm `count` xuống 1.
Trong hàm `main`, các đối tượng `A`, `B`, `C`, `D`, `E`, và `F` được tạo. Điều này làm cho `count` tăng lên 6. Sau đó, một khối mã con được tạo ra, trong đó đối tượng `G` được tạo. Điều này làm cho `count` tăng lên 7. Khi khối mã con kết thúc, đối tượng `G` bị hủy, và `count` giảm xuống 6. Cuối cùng, giá trị của `count` (là 6) được in ra.
Vậy đáp án đúng là C. 6