1
我有數個代表各種計算機組件的類,其中的每一個都一個重載<<
操作者聲明如下:重載輸出操作者
friend ostream& operator << (ostream& os, const MotherBoard& mb);
每個返回一個ostream對象與描述唯一流該組件,其中一些組件由其他組件組成。我決定創建一個名爲Component
的基類,以便生成一個唯一的id以及所有組件將公開派生的其他一些功能。當然,超載的<<
運算符不適用於指向Component
對象的指針。
我不知道我怎麼會影響這樣的事情會被每一個派生類的<<
運營商來覆蓋,所以我可以做類似純虛函數:
Component* mobo = new MotherBoard();
cout << *mobo << endl;
delete mobo;
還涉及:overloading << operators and inherited classes
+1我已經看過幾次,這是有道理的。但是,鑑於'output'是公開的,'operator <<'不必是朋友(也不應該)。另外,在過去,我已經看到簽名爲:'virtual std :: ostream&print(std :: ostream&out)const;'以便可以在手動調用時進行鏈接:'myobj.output(std :: cout)<
2012-02-10 13:39:19
@DavidRodríguez-dribeas你是對的,朋友宣言是不需要的,只是我猜想的一種習慣的力量。 :)根據您的建議更新代碼。 – 2012-02-10 13:44:03