Xem mẫu
Nội dung
Chương 4
HÀM THÀNH VIÊN
• Tái ñịnh nghĩa, ðối số mặc nhiên • Hàm inline
• Truyền ñối tượng như ñối số của hàm. • Trị trả về của hàm là ñối tượng
• Con trỏ *this
• Hàm thành viên hằng
1 2
Tái ñịnh nghĩa hàm thành viên Dùng ñối số mặc nhiên
• Trong 1 lớp, có thể ñịnh nghĩa các hàm thành viên trùng tên, nhưng các hàm này phải khác nhau về tham số.
Tính ña hình của lập trình hướng ñối tượng
• Có thể dùng ñối số mặc nhiên cho hàm thành viên.
• Tất cả ñối số mặc nhiên ñều phải nằm cuối hàm.
3 4
Hàm inline Truyền ñối tượng như ñối số của hàm
• Có 2 cách khai báo hàm inline :
– Thêm từ khóa inline vào trước hàm thành viên.
– ðịnh nghĩa hàm ngay bên trong khai báo lớp.
• Truyền qua giá trị
– Tham số của hàm thành viên có thể có kiểu bất kỳ.
– Một ñối tượng có thể ñược truyền theo tham số.
5
Truyền ñối tượng như ñối số của hàm
6
Truyền ñối tượng như ñối số của hàm
• Truyền qua địa chỉ
– Tiết kiệm ô nhớcho chương trình (hơn truyền qua giá trị).
– Có thểlàm thay đổi giá trị của đối tượng truyền vào.
• Truyền qua tham chiếu
– Tương tự như truyền qua ñịa chỉ.
– ðịnh nghĩa hàm sẽ ñơn giản hơn (như truyền qua giá trị)
– Cũng có thể làm thay ñổi giá trị của ñối tượng truyền vào.
7 8
Trị trả về của hàm là ñối tượng Trị trả về của hàm là ñối tượng
• Trị trả về truyền qua giá trị
– Trị trả về của hàm thành viên có thể có kiểu bất kỳ.
– Một hàm có thể có trị trả về là một ñối tượng.
• Trị trả về truyền qua ñịa chỉ
– Tránh lãng phí bộ nhớ và thời gian gọi hàm.
– Sử dụng phải cẩn thận vì có thể gây ra hiệu ứng phụ.
9 10
Trị trả về của hàm là ñối tượng Con trỏ *this
• Trị trả về truyền qua tham chiếu – Tương tự như truyền qua ñịa chỉ
– ða số dùng ñể trả về một ñối tượng toàn cục hay nội dung
một con trỏ ñã ñược cấp vùng nhớ trong hàm.
• Lưu ñịa chỉ của chính ñối tượng ñang xét.
• Muốn lấy giá trị của chính ñối tượng: dùng *this.
• Thuộc tính truy cập là private.
class Diem { int x, y;
public: Diem()
{ x=y=0; } Diem(int x, int y)
{
this->x = x; this->y = y; }
… 11 };
class ViDu2 { int a;
public:
ViDu2(int x) { a= x; } void InDiaChi()
{
cout<<“Dia chi doi tuong : “<
nguon tai.lieu . vn