JavaScript is required

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?

1. class CRect {

2. int height, width;

3. public :

4. void setGiatri(int a, int b) {

5. height = a;

6. width = b;

7. }

8. int DT() { return (height * width); }

9. };

10. int main() {

11. CRect a, *b, *c, d*;

12. d = new CRect[2]

13. b = new CRect;

14. c = &a

15. a.setGiatri(1,2);

16. b->setGiatri(3,4);

17. d->setGiatri(5,6);

18. d[1].setGiatri(7,8);

19. cout << c->DT() * (*b).DT() << endl;

20. delete b;

21. delete[] d;

22. return 0; 23. }

A.

24

B.

12

C.

30

D.

56

Trả lời:

Đáp án đúng: A


Đoạn code định nghĩa một lớp `CRect` với các thuộc tính `height` và `width`, cùng các phương thức `setGiatri` để gán giá trị cho các thuộc tính và `DT` để tính diện tích. Hàm `main` thực hiện các bước sau: 1. Khai báo các biến thuộc lớp `CRect`: `a`, `*b`, `*c`, và `d` (là một mảng các đối tượng `CRect`). 2. Cấp phát bộ nhớ cho `d` (mảng 2 phần tử), `b` (một đối tượng). 3. Gán địa chỉ của `a` cho `c`. 4. Gán giá trị cho các đối tượng `CRect`: * `a.setGiatri(1, 2)`: `a.height = 1`, `a.width = 2` * `b->setGiatri(3, 4)`: `b->height = 3`, `b->width = 4` * `d->setGiatri(5, 6)`: `d[0].height = 5`, `d[0].width = 6` * `d[1].setGiatri(7, 8)`: `d[1].height = 7`, `d[1].width = 8` 5. Tính và in ra kết quả của biểu thức `c->DT() * (*b).DT()`. * `c->DT()` tương đương với `a.DT()`, vì `c` trỏ tới `a`. `a.DT()` là `1 * 2 = 2`. * `(*b).DT()`: Diện tích của đối tượng mà `b` trỏ tới. `b->DT()` là `3 * 4 = 12`. * Vậy `c->DT() * (*b).DT()` là `2 * 12 = 24`. 6. Giải phóng bộ nhớ đã cấp phát cho `b` và `d`. Vậy, kết quả in ra màn hình là 24.

Câu hỏi liên quan