30/09/2018, 17:23

Thắc mắc toán tử nhập - xuất và operator

Mọi người giúp mình những vấn đề sau nhé:

  • Thực chất operator là cái gì và cách thức hoạt động ra sao?
  • Ví dụ nhập xuất 1 phân số
istream& operator >>(istream& is, PHANSO &ps)
{
        //Các câu lệnh
}
ostream& operator <<(ostream& os, PHANSO &ps)
{
      //Các câu lệnh
}

Giải thích những câu lệnh trên

  • Khi nào thì nên dùng operator ???. Ví dụ để cộng 2 phân số thì nên dùng operator+ hay dùng hàm bình thường?
viết 19:39 ngày 30/09/2018

Operator là hàm để định nghĩa các toán tử trong class, theo mình nôm na là thế.

Nguyễn Hữu Điền viết 19:35 ngày 30/09/2018

Vẫn không hiểu lắm, bạn có thể nói rõ hơn về cú pháp nhập hoặc xuất ở trên không?

Gió viết 19:32 ngày 30/09/2018

Theo mình operator bản chất cũng là hàm nhưng được biểu diễn dưới kí hiệu toán học.

Việc overload operator >> hay << không nhất thiết là phải viết theo dạng trên. Tuy nhiên lợi ích của nó là có thể viết gọn việc nhập xuất.

Vì các toán tử overload hạn chế. Tuy nhiên theo mình nếu mà các hàm là toán thì nên viết. Vd viết a+b*c sẽ dễ hơn b.mul©.add(a)

Trần Toàn viết 19:25 ngày 30/09/2018

Thực chất operator là cái gì và cách thức hoạt động ra sao?

operator nghĩa là toán tử. Nó được tạo ra để nạp chồng các toán tử +, -, . , /, >> , << [], … cho các kiểu dữ liệu mới ( class). Các toán tử giúp người đọc dễ hiểu, nhìn biểu thức gọn nhẹ hơn khi dùng hàm. Vd khi muốn dùng A + B thì rõ ràng nó dễ nhìn, gần gũi với ta hơn khi viết A.add(B) (Giả sử có hàm add() trong class rồi)

ostream& operator <<(ostream& os, PHANSO &ps)

Theo mình viết như này mới đúng
ostream& operator <<(ostream& os, const PHANSO &ps) vì toán tử << không thay đổi dữ liệu.

Ngân Hoa viết 19:34 ngày 30/09/2018

Tại sao phải truyển tham chiếu trong nạp chồng toán tử nhập, xuất à bạn?
Và tại sao phải dùng hàm khởi tạo sao chép trong hàm nạp chồng toán tử nhập??

Bài liên quan
0