Nguyễn Công Huy – Khoa CNTT&TT 2Tái định nghĩa hàm thành viê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ố.. Nguyễn Công Huy
Trang 1Nguyễn Công Huy – Khoa CNTT&TT 1
HÀM THÀNH VIÊN
Con trỏ *this
Trang 2Nguyễn Công Huy – Khoa CNTT&TT 2
Tái định nghĩa hàm thành viê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
Trang 3Nguyễn Công Huy – Khoa CNTT&TT 3
Dùng đối số mặc nhiên
Trang 4Nguyễn Công Huy – Khoa CNTT&TT 4
Hàm inline
Trang 5Nguyễn Công Huy – Khoa CNTT&TT 5
Truyền đối tượng như đối số của hàm
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ố
Trang 6Nguyễn Công Huy – Khoa CNTT&TT 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
Trang 7Nguyễn Công Huy – Khoa CNTT&TT 7
Truyền đối tượng như đối số của hàm
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.
Trang 8Nguyễn Công Huy – Khoa CNTT&TT 8
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
Trang 9Nguyễn Công Huy – Khoa CNTT&TT 9
Trị trả về của hàm là đố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ụ
Trang 10Nguyễn Công Huy – Khoa CNTT&TT 10
Trị trả về của hàm là đối tượng
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
Trang 11Nguyễn Công Huy – Khoa CNTT&TT 11
Con trỏ *this
class ViDu2 { int a;
public:
ViDu2( int x) { a= x; } void InDiaChi() {
cout << “Dia chi doi tuong : “
<<this<< endl ; cout << “Dia chi du lieu a : “
<<&a<< endl ; }
};
class Diem {
int x, y;
public :
Diem()
{ x=y=0; }
Diem( int x, int y) {
this ->x = x;
this ->y = y;
}
…
};
Trang 12Nguyễn Công Huy – Khoa CNTT&TT 12
Hàm thành viên hằng
Hằng dữ liệu: không thay đổi giá trị trong khi thực thi
Hằng đối tượng: không thay đổi giá trị các thành phần
dữ liệu trong đối tượng
Hàm thành viên hằng:
Có thể thao tác trên hằng đối tượng
Không làm thay đổi giá trị dữ liệu của đối tượng
public:
Diem();
};
… … …
Diem a;
a.Hien();
a.Doi(5,6);
}