首页 > 编程语言 > 详细

<C++>友元与虚函数的组合

时间:2016-11-17 19:22:40      阅读:149      评论:0      收藏:0      [点我收藏+]
为类重载<<与>>这两个运算符时,重载函数必须为该类的友元函数。
当友元不能被继承,故不能当作虚函数,无法使用多态。
可以用以下结构实现友元与虚函数的组合。
 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++>友元与虚函数的组合

原文:http://www.cnblogs.com/foundkey/p/6074250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!