Int z=min(x,y);

Một phần của tài liệu LẬP TRÌNH HƯỚNG đối TƯỢNG – OBJECT (Trang 28)

- from alpha to omeg a

1. int z=min(x,y);

12.

13. cout << "min= " << z << endl; // hiển thị giá trị nhỏ nhất

14.

15. return 0;

16.}

Chúng ta đều đoán được kết quả là màn hình hiển thị min= 5, nhưng thực sự thì chương trình trên hoạt động như thế nào? Ta để ý vào câu lệnh:

C++ Code:

29 Hướng dẫn lập trình hướng đối tượng với C++_ first_pace Hướng dẫn lập trình hướng đối tượng với C++_ first_pace

Khi gặp câu lệnh này, compiler sẽ gọi đến hàm min và thực hiện truyền x và y làm đối số. Tuy nhiên, đây là truyền theo tham trị. Tức là x, y không được truyền trực tiếp vào trong hàm min mà compiler thực hiện một công đoạn như sau: đầu tiên nó tạo ra hai biến tạma, b có kiểuint, rồi copy giá trị củax, y vào hai biến đó. Sau đó hai biến tạm đó được tống vào trong hàm min và thực tế hàm min đang thao tác trên “bản sao” củax và y chứ không phải trực tiếp trên x, y. Điều này có cái lợi mà cũng có cái hại. Cái lợi là do không bị thao tác trực tiếp nên các biến ban đầu (ở đây là x và y) sẽ không có khả năng bị "dính" những sửa đổi không mong muốn do hàm min gây ra. Còn cái hại là nếu như ta muốn sửa đổi giá trị của biến ban đầu thì lại không được (ví dụ muốn hoán đổi nội dung của hai biến x, y cho nhau) vì mọi thao tác là trên bản sao của x, y chứ không phải trên x, y. Thêm nữa, khi tạo bản sao cần phải tạo ra những biến tạm copy dữ liệu từ biến gốc sang biến tạm. Điều này gây ra những chi phí về bộ nhớ cũng như về thời gian, đặc biệt khi kích

thước của các đối số lớn hoặc được truyền nhiều lần.

Một phần của tài liệu LẬP TRÌNH HƯỚNG đối TƯỢNG – OBJECT (Trang 28)

Tải bản đầy đủ (PDF)

(72 trang)