【发布时间】:2013-07-28 14:19:52
【问题描述】:
我见过几个抽象类的例子,有一个朋友operator<< 和一个虚拟的“print”成员函数,其中两个声明都在protected 部分。例如:
class Function{
public:
virtual ~Function() {}
virtual double value(const double x) const = 0;
virtual Function* clone() const = 0;
protected:
friend ostream& operator<<(ostream& os, Function& f);
virtual void print(ostream& os) const = 0;
};
ostream& operator<<(ostream& os, Function& f){
f.print(os);
return os;
}
我不明白为什么这是强制性的。有人可以解释吗?
谢谢!
【问题讨论】:
-
为什么 what 是强制性的?
-
请学会正确写声明...你没注意到your previous question被编辑了吗? (链接:stackoverflow.com/posts/17907019/revisions)读“decleration”让我很难过:'(
-
好吧,我自己修好了……现在还有
operator<<的参数Function& f应该是const Function& f(两次),因为打印f应该不 i> 修改它,但我不想碰代码(实际上我刚刚注意到我在类定义后添加了一个缺少的;)。
标签: c++ operator-overloading abstract-class protected