首页 > 代码库 > <C++>友元与虚函数的组合
<C++>友元与虚函数的组合
为类重载<<与>>这两个运算符时,重载函数必须为该类的友元函数。
当友元不能被继承,故不能当作虚函数,无法使用多态。
可以用以下结构实现友元与虚函数的组合。
1 class base { 2 public: 3 friend ostream & operator << (ostream &o, const base &b); 4 private: 5 virtual ostream & print(ostream & o) const { 6 return o << "Hello, Base"; 7 } 8 }; 9 10 class derived : public base { 11 public: 12 private: 13 virtual ostream & print(ostream & o) const override { 14 return o << "Hello, Derived"; 15 } 16 }; 17 18 ostream & operator << (ostream &o, const base &b) 19 { 20 return b.print(o); 21 } 22 23 int main() 24 { 25 base base_obj; 26 derived derived_obj; 27 vector<base *> v = {&base_obj, &derived_obj}; 28 for(auto i: v) { 29 cout << *i << endl; 30 } 31 return 0; 32 }
<C++>友元与虚函数的组合
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。