Lập trình hướng đối tượng C/C++ - OOP 04 operators
Trang 2Nội dung dung
Khái Khái niệm niệm cơ cơ bản bản
Con Con trỏ trỏ this this.
Hàm Hàm Friend Friend.
Trang 3Nội dung dung
Khái Khái niệm niệm cơ cơ bản bản
Con Con trỏ trỏ this this.
Hàm Hàm Friend Friend.
Trang 4Khái niệm niệm cơ cơ bản bản
Sự Sự khác khác biệt biệt giữa giữa int int và và PhanSo PhanSo? ?
}}
//
// Thao Thao tác tác trên trên kiểu kiểu PhanSo PhanSo
void void main main() () {{
PhanSo PhanSo p1, p2; p1, p2;
int int a, b; a, b;
int int c = c = timMin timMin(a, b); (a, b);
PhanSo PhanSo p1, p2; p1, p2;
Trang 5Khái niệm niệm cơ cơ bản bản
Hàm Hàm toán toán tử tử::
Khái Khái niệm niệm::
MộtMột hàmhàm trongtrong chươngchương trìnhtrình
Có tênCó tên làlà kýký hiệuhiệu toántoán tửtử
DùngDùng từtừ khóakhóa “operator” “operator” đểđể phânphân biệtbiệt ((trongtrong C++).C++)
PhanSo PhanSo operator + operator +(const (const PhanSo PhanSo &p1, const &p1, const PhanSo PhanSo &p2); &p2);
PhanSo PhanSo operator + operator +(const (const PhanSo PhanSo &p1, const &p1, const PhanSo PhanSo &p2); &p2);
Công Công dụng dụng::
SửSử dụngdụng toántoán tửtử trêntrên kiểukiểu ngườingười dùngdùng địnhđịnh nghĩanghĩa
PhanSo PhanSo p3 = p1 p3 = p1 + + p2; p2;
ĐịnhĐịnh nghĩanghĩa nhiềunhiều cáchcách thựcthực hiệnhiện toántoán tửtử ((nnạpạp chồngchồng hàmhàm).)
float
float opeartor opeartor + +(const (const PhanSo PhanSo &p, float so); &p, float so);
Trang 6Khái niệm niệm cơ cơ bản bản
Phân Phân loại loại hàm hàm toán toán tử tử::
Toán Toán tử tử độc độc lập lập::
KhôngKhông thuộcthuộc lớplớp nàonào
SốSố lượnglượng thamtham sốsố = = ngôingôi toántoán tửtử
bool operator > operator >(const (const PhanSo PhanSo &p1, const &p1, const PhanSo PhanSo &p2); &p2);
Toán Toán tử tử thuộc thuộc lớp lớp::
Là phươngLà phương thứcthức củacủa lớplớp
Số lượngSố lượng thamtham sốsố + 1 = + 1 = ngôingôi toántoán tửtử
PhanSo
PhanSo PhanSo PhanSo::operator + ::operator +(const (const PhanSo PhanSo &p); &p);
bool
bool PhanSo PhanSo::operator > ::operator >(const (const PhanSo PhanSo &p); &p);
Cách Cách sử sử dụng dụng 2 2 loại loại là là như như nhau nhau!! !!
Trang 7Khái niệm niệm cơ cơ bản bản
Những Những toán toán tử tử có có thể thể định định nghĩa nghĩa lại lại::
Ngôi Nhóm Toán tử
1 Ngôi (Unary) Tăng giảm ++, ++,
Dấu số học +, +, Logic !, ~ Con trỏ *, &
Trang 8Khái niệm niệm cơ cơ bản bản
Những Những toán toán tử tử không không thể thể định định nghĩa nghĩa lại lại::
Toán Toán tử tử Ý nghĩa
Truy xuất phần tử * Truy Truy xuất xuất con con trỏ trỏ phần phần tử tử :: Toán Toán tử tử :: ::
:: Toán Toán tử tử :: ::
? : Toán Toán tử tử điều điều kiện kiện
# Chỉ Chỉ thị thị tiền tiền xử xử lý lý
# # Chỉ Chỉ thị thị tiền tiền xử xử lý lý
Trang 9Khái niệm niệm cơ cơ bản bản
Những Những hạn hạn chế chế (4 (4 không không): ):
Không Không thể thể tạo tạo toán toán tử tử mới mới
Không Không thể thể định định nghĩa nghĩa lại lại toán toán tử tử trên trên kiểu kiểu cơ cơ bản bản
Không Không thể thể thay thay đổi đổi ngôi ngôi của của toán toán tử tử
Không Không thể thể thay thay đổi đổi độ độ ưu ưu tiên tiên của của toán toán tử tử
Trang 10Khái niệm niệm cơ cơ bản bản
Dr Guru Dr Guru khuyên khuyên::
Quy Quy tắc tắc định định nghĩa nghĩa toán toán tử tử::
TênTên hàmhàm: : operator < operator <tên tên toán toán tử tử> >
SốSố lượnglượng thamtham sốsố: : ngôi ngôi toán toán tử tử
KiểuKiểu thamtham sốsố: : kiểu kiểu toán toán hạng hạng
KiểuKiểu trảtrả vềvề: : kết kết quả quả toán toán tử tử
KiểuKiểu trảtrả vềvề: : kết kết quả quả toán toán tử tử
Ví Ví dụ dụ::
Toán Toán tử tử > >.
Toán Toán tử tử [ ] [ ].
Trang 11Nội dung dung
Khái Khái niệm niệm cơ cơ bản bản
Con Con trỏ trỏ this this.
Hàm Hàm Friend Friend.
Trang 13Con
Con trỏ trỏ this this
Con Con trỏ trỏ this: this:
Một Một con con trỏ trỏ đặc đặc biệt biệt trong trong C++ C++.
Giữ Giữ địa địa chỉ chỉ của của đối đối tượng tượng đang đang gọi gọi phương phương thức thức
Trang 14Nội dung dung
Khái Khái niệm niệm cơ cơ bản bản
Con Con trỏ trỏ this this.
Hàm Hàm Friend Friend.
Trang 15Hàm Friend Friend
Xét Xét toán toán tử tử xuất xuất <<: <<:
Trang Trang bị bị toán toán tử tử << << cho cho lớp lớp PhanSo PhanSo
Toán Toán tử tử << << thuộc thuộc về về lớp lớp nào nào? ?
Trang 16KhaiKhai báobáo bênbên trongtrong lớplớp
DùngDùng từtừ khóakhóa friend friend đểđể phânphân biệtbiệt ((trongtrong C++).C++)
CàiCài đặtđặt bênbên ngoàingoài lớplớp
CàiCài đặtđặt bênbên ngoàingoài lớplớp
class
class PhanSo PhanSo
{{
friend friend ostreamostream& & operator << operator <<((ostreamostream & &os os, const , const PhanSo PhanSo &p); &p);
Trang 17Tóm tắt tắt
Hàm Hàm toán toán tử tử::
Hàm Hàm có có tên tên là là toán toán tử tử
Dùng Dùng định định nghĩa nghĩa lại lại toán toán tử tử
Có Có 2 2 loại loại hàm hàm toán toán tử tử::
ToánToán tửtử độcđộc lậplập
ToánToán tửtử thuộcthuộc lớplớp
Con Con trỏ trỏ this: this:
Giữ Giữ địa địa chỉ chỉ của của đối đối tượng tượng gọi gọi phương phương thức thức
Hàm Hàm Friend: Friend:
Hàm Hàm truy truy xuất xuất được được thành thành phần phần của của lớp lớp
Trang 18ToánToán tửtử mộtmột ngôingôi: ++, : ++, ((tăngtăng, , giảmgiảm 1 1 đơnđơn vịvị).).
ToánToán tửtử épép kiểukiểu: (float), (: (float), (intint).)
ToánToán tửtử épép kiểukiểu: (float), (: (float), (intint).)
ToánToán tửtử nhậpnhập, , xuấtxuất: >>, <<.: >>, <<
Trang 19ToánToán tửtử mộtmột ngôingôi::
++, ++, ((tăng tăng, , giảm giảm bậc bậc) ).
++, ++, ((tăng tăng, , giảm giảm bậc bậc) ).
! ( ! (đạo đạo hàm hàm), ~ ( ), ~ (nguyên nguyên hàm hàm) ).
ToánToán tửtử nhậpnhập, , xuấtxuất: >>, <<.: >>, <<
Trang 20ToánToán tửtử lấylấy phầnphần tửtử: [ ].: [ ].
ToánToán tửtử épép kiểukiểu: (: (intint *).*)
ToánToán tửtử nhậpnhập, , xuấtxuất: >>, <<.: >>, <<
ToánToán tửtử nhậpnhập, , xuấtxuất: >>, <<.: >>, <<
Trang 21Bài tập tập
Bài Bài tập tập 4.4: 4.4:
Xây
Xây dựngdựng lớplớp Time Time cócó nhữngnhững phươngphương thứcthức sausau::
((Nhóm Nhóm tạo tạo hủy hủy))
KhởiKhởi tạotạo mặcmặc địnhđịnh vàovào thờithời điểmđiểm hiệnhiện tạitại
KhởiKhởi tạotạo từtừ giờgiờ, , phútphút, , giâygiây chocho trướctrước
KhởiKhởi tạotạo từtừ giâygiây tuyệttuyệt đốiđối trongtrong ngàyngày
KhởiKhởi tạotạo từtừ giâygiây tuyệttuyệt đốiđối trongtrong ngàyngày
KhởiKhởi tạotạo từtừ mộtmột đốiđối tượngtượng Time Time kháckhác
((Nhóm Nhóm truy truy xuất xuất thông thông tin) tin)
ThôngThông báobáo giờgiờ, , phútphút, , giâygiây
ThôngThông báobáo giâygiây tuyệttuyệt đốiđối trongtrong ngàyngày
Trang 22So So sánhsánh thứthứ tựtự vớivới đốiđối tượngtượng Time Time kháckhác
TínhTính khoảngkhoảng cáchcách đếnđến đốiđối tượngtượng Time Time kháckhác ((đơnđơn vịvị giâygiây).)
CộngCộng giờgiờ, , cộngcộng phútphút, , cộngcộng giâygiây
CộngCộng giờgiờ, , cộngcộng phútphút, , cộngcộng giâygiây
((Nhóm Nhóm toán toán tử tử))
ToánToán tửtử so so sánhsánh: >, <, ==, >=, <=, !=.: >, <, ==, >=, <=, !=
ToánToán tửtử cộngcộng, , trừtrừ: +, : +,
ToánToán tửtử tăngtăng, , giảmgiảm giâygiây: ++, : ++,
ToánToán tửtử nhậpnhập xuấtxuất: >>, <<.: >>, <<
Trang 23Bài tập tập
Bài Bài tập tập 4.5: 4.5:
Xây
Xây dựngdựng lớplớp Date Date cócó nhữngnhững phươngphương thứcthức sausau::
((Nhóm Nhóm tạo tạo hủy hủy))
KhởiKhởi tạotạo mặcmặc địnhđịnh vàovào ngàyngày hiệnhiện tạitại
KhởiKhởi tạotạo từtừ ngàyngày, , thángtháng, , nămnăm chocho trướctrước
KhởiKhởi tạotạo từtừ nămnăm vàvà ngàyngày tuyệttuyệt đốiđối trongtrong nămnăm
KhởiKhởi tạotạo từtừ nămnăm vàvà ngàyngày tuyệttuyệt đốiđối trongtrong nămnăm
KhởiKhởi tạotạo từtừ mộtmột đốiđối tượngtượng Date Date kháckhác
((Nhóm Nhóm truy truy xuất xuất thông thông tin) tin)
ThôngThông báobáo ngàyngày, , thángtháng, , nămnăm
ThôngThông báobáo ngàyngày tuyệttuyệt đốiđối trongtrong nămnăm
ThôngThông báobáo thứthứ trongtrong tuầntuần
ThôngThông báobáo tuầntuần trongtrong nămnăm
Trang 24KiểmKiểm tratra nămnăm nhuậnnhuận
So So sánhsánh thứthứ tựtự vớivới đốiđối tượngtượng Date Date kháckhác
TínhTính khoảngkhoảng cáchcách đếnđến đốiđối tượngtượng Date Date kháckhác ((đơnđơn vịvị ngàyngày).)
TínhTính khoảngkhoảng cáchcách đếnđến đốiđối tượngtượng Date Date kháckhác ((đơnđơn vịvị ngàyngày).)
CộngCộng ngàyngày, , cộngcộng thángtháng, , cộngcộng nămnăm
((Nhóm Nhóm toán toán tử tử))
ToánToán tửtử so so sánhsánh: >, <, ==, >=, <=, !=.: >, <, ==, >=, <=, !=
ToánToán tửtử cộngcộng, , trừtrừ: +, : +,
ToánToán tửtử tăngtăng, , giảmgiảm ngàyngày: ++, : ++,
ToánToán tửtử nhậpnhập xuấtxuất: >>, <<.: >>, <<