Xem mẫu
- Chương 4
HÀM THÀNH VIÊN
1
- Nội dung
• 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
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
3
- Dùng đối số mặc nhiên
• 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.
4
- Hàm inline
• 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.
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ố.
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.
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.
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.
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ụ.
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.
11
- Con trỏ *this
• 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 { class ViDu2 {
int x, y; int a;
public: public:
Diem() ViDu2(int x) { a= x; }
{ x=y=0; } void InDiaChi()
Diem(int x, int y) {
{ cout
- 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.
class Diem { void main() {
int x,y; Diem a;
public: const Diem c;
Diem(); a.Hien();
void Hien() const; a.Doi(5,6);Sai vì
void Doi(int, int); c.Hien(); Doi(int,int)
}; c.Doi(10,20);
không là hàm
… … … } hằng 13
nguon tai.lieu . vn