2010-06-21 45 views
6

Operatörde >> işletmen < < operatörüyle eşleşmeli mi?Operatörler << sınıfları için biçimlendirmeli misiniz?

Veritabanı Örnek:

operatör >> aşağıdaki formatın şey okursa:

2 
Joe 500 20 1 
Bob 250 30 0 

gerektiği operatör < < çıktı mı? Veya böyle bir şey: o zaman

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

Ve ayrı WriteFile() fonksiyonu var?

Ya işe yarayacağını biliyorum, ama "kabul edilen standart" nedir?

cevap

7

Eğer aynı türü için bir ostream operator<< aşırı uygulamak o zaman, belirli bir formatta veri okuyan bir türü için bir istream operator>> aşırı varsa, aksi takdirde aynı formatta (çıktı, oldukça kafa karıştırıcı alabilir olmalıdır).

3

Bu tür bir operatör aşırı yüklemesi IMO'nun büyük bir yanlış kullanımı ve yanlış anlaşılmasıdır. Gerçekten bir şey ifade ettiği yerlerde aşırı yükleme kullanın.

Hata ayıklama amacıyla, toString() numaralı telefon numarasına sahip olmak ve < < numaralı telefonu geçersiz kılmak. Hiçbir şekilde >> geçersiz kılmayın. >> ve << ve genellikle kullanıcılarla iletişim için değil, akışlara serileştirilmiş veri göndermek için kullanılır.

Benim 2 eurocents.

+2

Katılmıyorum: Bir akıştan veri okuma veya yazma niyetindeyseniz, "akış operatörleri" nin aşırı yüklenmesi hem basit hem de deyimseldir. –

+0

Haklısın - bunu yazarken cevabımı da ekliyordum :) –

0

İhtiyacınıza göre birbirinden bağımsız veya birbirinden bağımsız olarak bunları aşırı yükleyebilirsiniz.

+1

Bence OP bunu biliyor. Bunu yapmak için iyi bir fikir olup olmadığını soruyor. Örneğin, aşırı yükleyebilirsin && ama genel olarak bunu yapmaktan kaçınmalısın. –

+0

@Billy ya, siz haklısınız. Ancak, geçersiz kılma (<<), sık sık kontrol için (kodlama yaparken) her zaman iyidir. – prabhakaran

İlgili konular