Tổng quát về gọi hàm trongVC++

Một phần của tài liệu BÀI GIẢNG: MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG pptx (Trang 81 - 85)

Trong VC++, các lệnh thực thi ₫ều phải nằm trong thân của 1 hàm nào ₫ó. Ta phân biệt 2 loại hàm :

ƒ Hàm cổ ₫iển, tồn tại ở cấp ngoài cùng (không thuộc class nào).

ƒ Hàm trong 1 class ₫ối tượng nào ₫ó, ta tạm dùng thuật ngữ "tác vụ" ₫ể nói về loại hàm này.

Trong thân của 1 hàm cổ ₫iển, xét lệnh sau : function1(...);

::function1(...);

Hai lệnh trên ₫ược gọi là lời gọi hàm cổ ₫iển function1(). Hàm function1() phải tồn tại trong module nào ₫ó của phần mềm hoặc trong module thư viện mà phần mềm sẽ liên kết ₫ến.

Tng quát v gi hàm trong VC++

Trong thân của 1 tác vụ, xét lệnh sau : ::function1(...);

Lệnh trên là lời gọi hàm cổ ₫iển function1(). Hàm function1() phải tồn tại trong module nào ₫ó của phần mềm hoặc trong module thư

viện mà phần mềm sẽ liên kết ₫ến.

Trong thân của 1 tác vụ, xét lệnh sau : function1(...);

Nếu function1() không ₫ược ₫ịnh nghĩa trong class của ₫ối tượng tương ứng thì lệnh trên là lời gọi hàm cổ ₫iển function1(). Hàm function1() phải tồn tại trong module nào ₫ó của phần mềm hoặc trong module thư viện mà phần mềm sẽ liên kết ₫ến.

Tng quát v gi hàm trong VC++

‰ Trong VC++, có 2 cách truy xuất ₫ối tượng khác nhau :

ƒ thông qua biến ₫ối tượng MyClass obj;

ƒ thông qua biến tham khảo ₫ến ₫ối tượng : MyClass *pobj;

‰ Biến obj miêu tả bản thân ₫ối tượng MyClass (1 cách tường minh, xác ₫ịnh và không nhầm lẫn với bất kỳ ₫ối tượng thuộc class nào khác. Cú pháp gọi tác vụ thông qua biến ₫ối tượng là :

obj.function1(...);

lệnh trên luôn ₫ược dịch ra thành lời gọi hàm function1(...) của class MyClass tại thời ₫iểm dịch. Do ₫ó tại thời ₫iểm chạy, nếu biến obj ₫ang chứa 1 ₫ối tượng khác thì lệnh obj.function1(..) vẫn luôn là lời gọi hàm function1(..) của class MyClass. Không có ₫a xạ trong trường hợp này. Ngữ nghĩa của lời gọi hàm như trên có thể ₫úng/không ₫úng với yêu cầu của người lập trình tại từng thời

Tng quát v gi hàm trong VC++

Trong thân của 1 tác vụ, xét lệnh sau : function1(...);

Nếu function1() ₫ược ₫ịnh nghĩa trong class của ₫ối tượng tương

ứng thì lệnh trên sẽ ₫ược chuyển thành lệnh : this->function1(...);

trong ₫ó this là tên biến tham khảo ₫ến ₫ối tượng hiện hành. Lệnh this->function1(...); là trường hợp ₫ặc biệt của lệnh :

pobj->function1(...);

trong ₫ó pobj là tên biến tham khảo ₫ến ₫ối tượng nào ₫ó ₫ã ₫ược

₫ịnh nghĩa trước ₫ó.

Bây giờ chúng ta hãy khảo sát chi tiết về việc xử lý lệnh

Một phần của tài liệu BÀI GIẢNG: MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG pptx (Trang 81 - 85)