2010-06-21 29 views
6

Như trong, toán tử >> có khớp với toán tử < < không?Bạn có nên định dạng toán tử << cho các lớp không?

Cơ sở dữ liệu Ví dụ:

Nếu các nhà điều hành >> đọc trong một cái gì đó của định dạng sau:

2 
Joe 500 20 1 
Bob 250 30 0 

nên các nhà điều hành < < đầu ra? Hoặc một cái gì đó như thế này:

Record: 1/2 
Name: Joe 
Balance: 500 
Transactions: 20 
Premium Account: Yes 

Và sau đó có một hàm writeFile() riêng biệt?

Tôi biết có thể hoạt động hay không, nhưng "tiêu chuẩn được chấp nhận" là gì?

Trả lời

7

Nếu bạn bị quá tải operator>> cho một loại đọc dữ liệu ở định dạng cụ thể, thì nếu bạn triển khai quá tải ost2 operator<< cùng loại, nó sẽ xuất ra cùng định dạng (nếu không, nó có thể khá khó hiểu).

3

Loại quá tải toán tử này là IMO là một sự lạm dụng và quan niệm sai lầm lớn. Sử dụng quá tải nơi thực sự có ý nghĩa.

Vì mục đích gỡ lỗi, hãy toString() và ghi đè < < để gọi. Đừng ghi đè >>.

>><< thường phục vụ để gửi dữ liệu được tuần tự đến luồng chứ không phải để liên lạc với người dùng.

My 2 eurocents.

+2

Tôi không đồng ý: nếu bạn có ý định đọc hoặc ghi dữ liệu từ luồng, thì việc quá tải "toán tử luồng" là đơn giản và thành ngữ. –

+0

Bạn nói đúng - Tôi đã thêm vào câu trả lời của tôi khi bạn viết bài này :) –

0

Cả hai hoặc độc lập với nhau, theo ý muốn của bạn, bạn có thể quá tải chúng.

+1

Tôi nghĩ rằng OP biết điều đó. Anh ấy hỏi liệu đó có phải là một ý hay hay không. Ví dụ, bạn có thể quá tải && nhưng nói chung bạn nên tránh làm như vậy. –

+0

@Billy ya, bạn là chính xác. Nhưng trọng số << luôn luôn tốt cho việc kiểm tra thường xuyên (khi bạn đang viết mã). – prabhakaran

Các vấn đề liên quan