Thắc Mắc Nạp Chồng Toán Tử Input/output C++ - Dạy Nhau Học
Có thể bạn quan tâm
nói chính xác hơn là << và >> là toán tử dịch bit. Lão Stroustrup bị khùng nên lấy toán tử dịch bit đi làm input output cho stream.
<< và >> thì cũng như phép + hay -, có 2 phần tử tham gia: vế trái và vế phải. Viết 1 hàm cho toán tử có thể viết theo công thức <kiểu trả về> operator<toán tử>(<kiểu vế trái> <vế trái>, <kiểu vế phải> <vế phải>); ví dụ std::ostream& operator<<(std::ostream& out, const PhanSo& rhs); thì kiểu trả về là std::ostream& toán tử là << kiểu vế trái là std::ostream& (trùng với kiểu trả về) kiểu vế phải là const PhanSo&
thì khi sử dụng << trong câu lệnh std::cout << ps; vế trái là std::cout có kiểu kế thừa từ std::ostream nên có thể xem là std::ostream, vế phải là ps có kiểu là PhanSo được truyền const-reference vào << tức là truyền đích thị ps chứ ko tạo ra bản copy, vào bản chính truyền vào được xem như là 1 hằng.
vì sao kiểu trả về trùng với kiểu vế trái: để có thể viết như vầy: std::cout << ps1 << "\n"; Toán tử << được xét từ trái sang phải, tức là std::cout << ps1 << "\n"; được xét (std::cout << ps1) << "\n"; Như vậy kết quả trả về của (std::cout << ps1) sẽ là vế trái của toán tử << tiếp theo, vì vậy nên trả về trùng kiểu vế trái của toán tử trước nó.
phương thức (hàm của class) thì vế trái luôn luôn có kiểu là T* (T là tên của class) hoặc const T* nếu thêm const vào phía sau khai báo của phương thức. Tức là con trỏ this luôn được xem là vế trái của 1 phương thức trong class.
vì << là operator cho stream nên vế trái của nó ở đây là std::ostream chứ ko phải PhanSo, vì vậy phải viết hàm ko thuộc class. (hàm thuộc class gọi là phương thức, hàm ko thuộc class nào gọi là… hàm). Nhưng vì hàm nằm ngoài class ko thể truy cập các phần tử private của class (ở đây là tử số và mẫu số) nên lão Stroustrup chế ra cái keyword friend tức là hàm này có quyền truy cập các phần tử private của class thoải mái, miễn là có khai báo friend <khai báo hàm> trong class (bạn bè có quyền lục lọi đồ riêng tư của bạn bè? Chọn tên cũng khùng vãi )
vì friend đơn giản là phá hủy tính đóng gói (encapsulation), 1 trong các quy tắc của OOP, nên hạn chế xài friend.
Từ khóa » Toán Tử Istream
-
Nạp Chồng Toán Tử Có Quan Trọng Không? - CodeLearn
-
Nạp Chồng Toán Tử Trong C++ | TopDev
-
Nạp Chồng Toán Tử Nhập Xuất | Learn Cpp - TuiTuCode
-
Nạp Chồng Toán Tử Input/Output Trong C++ - Hoclaptrinh
-
Đa Năng Hóa Toán Tử-các Toán Tử Chèn Dòng - .vn
-
Hỏi Về Nạp Chồng Toán Tử Operator >> << - Programming
-
DA NANG HOA TOAN TU(Phan 2)
-
Nạp Chồng Hàm Và Nạp Chồng Toán Tử - Lập Trình Không Khó
-
Mặc định Bản Chất Của Toán Tử >> <> << C++ (toán Tử Xuất Nhập)
-
[Học OOP] Bài 7: Overload Toán Tử Trong Lập Trình Hướng đối Tượng ...
-
Nạp Chồng Toán Tử Input/Output Trong C++
-
Sử Dụng Toán Tử >> Và << Cho Lớp Kế Thừa [Archive]
-
4 Nạp Chồng Toán Tử - Tài Liệu Text - 123doc
-
Đa Năng Hóa Toán Tử - Lập Trình Hướng đối Tượng - OpenStax CNX
-
Về đa Năng Hóa Hàm Và đa Năng Hóa Toán Tử | Facebook
-
[PDF] Bài 10: Chồng Hàm Và Toán Tử (Function And Operator Overload)
-
Bài 4-Nạp Chồng Toán Tử - Lập Trình Hướng đối Tượng | PDF - Scribd
-
Chi Tiết Bài Học Nạp Chồng Toán Tử Trong C++ - Vimentor