Tải bản đầy đủ (.pdf) (4 trang)

Bài giảng Lập trình hướng đối tượng và C++: Chương 4

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (136.28 KB, 4 trang )

Nội dung
• Tái định nghĩa, ðối số mặc nhiên

Chương 4

• Hàm inline

HÀM THÀNH VIÊN

• 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ố.

• 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.

Tính ña hình của lập trình hướng ñối tượng

3



4


Hàm inline

Truyền đối tượng như đối số của hàm
• Truyền qua giá trị

• 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.

– 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 tham chiếu

• Truyền qua địa chỉ

– Tương tự như 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.

– ðị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 tồ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.

11

class Diem {
int x, y;
public:
Diem()
{ x=y=0; }
Diem(int x, int y)
{
this->x = x;
this->y = y;
}

};

class ViDu2 {
int a;
public:
ViDu2(int x) { a= x; }
void InDiaChi()
{

cout<<“Dia chi doi
tuong : “<cout<< “Dia chi du lieu
a : “<<&a<}
};
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.
class Diem {
int x,y;
public:
Diem();
void Hien() const;
void Doi(int, int);
};
… … …

void main() {
Diem a;
const Diem c;
a.Hien();
a.Doi(5,6);

Sai vì
c.Hien();
Doi(int,int)
c.Doi(10,20); khơng là hàm
}
13
hằng



×