Bài giảng Lập trình hướng đối tượng C++ - Chương 4: Hàm thành viên
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng C++ - Chương 4: Hàm thành viên", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_lap_trinh_huong_doi_tuong_c_chuong_4_ham_thanh_vie.pdf
Nội dung text: Bài giảng Lập trình hướng đối tượng C++ - Chương 4: Hàm thành viên
- 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 x = x; tuong : “ y = y; cout<< “Dia chi du lieu } a : “<<&a<<endl; } }; }; 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 { 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