基类的友元类,可以访问其派生类的私有虚函数

        我们知道一个基类的友元类,并不是其派生类的友元类 ,但是一个基类的友元类,可以访问其派生类的虚函数,而不受访问限制

        是不是觉得好神奇,哈哈!看看下面的代码:

#include <iostream> 

class Base{
	friend class Test;	  //基类的友元类Test
	virtual void f() = 0; //虚函数 
public:
	virtual ~Base() {  }  //虚析构
};

class Derived:public Base{
	virtual void f(){ std::cout << "class Derived"; }
};

class Test{
	Base* bp;
public:
	Test(Base* bp):bp(bp) { }
	~Test(){ delete bp; }
	void f(){ bp->f(); } //Test类只是基类友元类
						 //通过基类指针访问派生类的虚函数,不受访问限制
};

int main()
{		
	Test t( new Derived() );	
	t.f();
	
	return 0;
}

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值