01/10/2018, 09:57

Overloading Operator << and >> in C++

Tại sao khi Nạp chồng toán tử in out lại phải có keyword Friend ở trước nó vậy các tiền bối ?
C

Mai Anh Dũng viết 12:02 ngày 01/10/2018

Bởi vì cái “nạp chồng toán tử” này nó cần phải truy cập tới phần tử protected hoặc privated của class, ở dây là Phanso. Nên mình phải khai báo hàm này là friend.

Hàm Friend, hay hàm bạn, được phép truy cập vào protected, private của class bạn của nó.

Nguyen Trong Dung viết 12:09 ngày 01/10/2018

Vậy tại sao ở đây lại k cần dùng hả anh?

rogp10 viết 12:02 ngày 01/10/2018

Cái đó là phương thức rồi

Lí do thực ra là vì nếu bạn viết theo cách thông thường thì bạn phải truy cập được cài đặt của istream/ostream để sửa code.

Lone viết 12:11 ngày 01/10/2018

operator- là 1 phương thức thành viên của Phanso nên nó được quyền truy cập các thuộc tính protected và private của Phaso.
Khi sử dụng:

Phanso a, b;
a+b;

a + b; có thể hiểu là gọi hàm operator- của Phanso a với tham số truyền vào là Phan so b.

đối với operator<<, nếu khai báo nó là 1 phương thức thành viên của Phanso thì khi dùng bạn sẽ phải gọi a << std::cout; tức là gọi phương thức operator<< của a với tham số truyền vào std::cout (std::cout là 1 đối tượng ostream). như vậy sẽ thiếu tự nhiên về mặt logic và không tiện.

vậy nên ta khai báo nó là hàm friend. các hàm friend có quyền truy cập vào các thuộc tính protected và private của Phanso, nhưng chú ý hàm friend KHÔNG PHẢI là phương thức thành viên của Phanso kể cả khi định nghĩa hàm nằm ở trong định nghĩa class.
với hàm friend như trên, khi gọi std::cout << a; là gọi hàm có tên là operator<< với std::cout là tham số thứ nhất, và a kiểu Phanso làm tham số thứ 2.

để hiểu rõ thêm về hàm friend bạn hãy google lập trình hướng đối tượng trong c++. để hiểu rõ thêm về toán tử << >> thì goolge toán tử chèn luồng trong c++. toàn bộ những kiến thức trên bạn đều có thể hoc được trên mạng, lần sau chịu khó google nhé.

Kira viết 12:04 ngày 01/10/2018

Giải thích chưa đúng, thiếu rõ thế mà cũng dạy khóa học trên udemy. À mà các khóa đó đang bị bỏ con giữa chợ lừa tiền

Bài liên quan
0