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.
Tổng quát về gọi 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.
Tổng quát về gọi 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
Tổng quát về gọi 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