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