Giá trị trả về của hàm là một đối tượng

Một phần của tài liệu Giáo trình Lập trình hướng đối tượng (Nghề Lập trình máy tính): Phần 1 - Tổng cục dạy nghề (Trang 47)

Khi đã định nghĩa một đối tượng, chúng ta có thể coi chúng như một kiểu dữ liệu. Vì vậy chúng ta có thể trả về kết quả cho hàm là một đối tượng.

Ví dụ: class DIEM { public: int x,y; }; DIEM d_traidau(DIEM d) { DIEM d2; d2.x = -d.x; d2.y = -d.y; return d2; } 3.6. Tham chiếu

Trong C++, các tham số và giá trị trả về của một hàm được truyền bằng giá trị. Để giả lập cơ chế truyền tham biến ta phải sử dụng con trỏ.

Việc dùng khái niệm tham chiếu trong khai báo tham số hình thức của hàm sẽ yêu cầu chương trình biên dịch truyền địa chỉ của biến cho hàm và hàm sẽ thao tác trực tiếp trên các biến đó. Chúng ta sẽ xét ba cách viết khác nhau của hàm thực hiện việc hoán đổi nội dung của hai biến.

void hoandoi1(int x, int y){ int tam = x;

x = y; y = tam; }

void hoandoi2(int *x, int *y){ int tam = *x;

*x = *y; *y = tam; }

void hoandoi3(int &x, int &y){ int tam = x;

x = y; y = tam; }

Trong hàm hoandoi1(), các tham số x, y được truyền theo tham trị nên giá trị của chúng không thay đổi trước và sau lời gọi hàm.

Giải pháp đưa ra trong hàm hoandoi2() là thay vì truyền trực tiếp giá trị hai biến x và y người ta truyền địa chỉ của chúng rồi thông qua địa chỉ này để xác định giá trị của biến. Bằng cách đó giá trị của hai biến x và y sẽ hoán đổi cho nhau sau lời gọi hàm.

Khác với hoandoi2(), hàm hoandoi3() đưa ra giải pháp sử dụng tham chiếu. Các tham số hình thức của hoandoi3() bây giờ là các tham chiếu đến các tham số thực được truyền cho hàm, nhờ vậy mà giá trị của hai tham số thực x và y có thể hốn đổi được cho nhau.

Một phần của tài liệu Giáo trình Lập trình hướng đối tượng (Nghề Lập trình máy tính): Phần 1 - Tổng cục dạy nghề (Trang 47)

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

(68 trang)