2.5.2 友元函数模板

2013-10-07 16:30:27 · 作者: · 浏览: 140

2.5.2 友元函数模板

C++(www.cppentry.com)中的类可以声明友元函数和友元类,也可以声明友元函数模板和类模板。友元函数模板与类模板的任何实例都是该类的友元,可以访问类中私有成员。声明友元模板的例子如下:

  1. class citizen  
  2. {  
  3.     int id;  
  4.     double money;  
  5.  
  6.     template<typename T> 
  7.     friend class FBI_agent;  
  8.  
  9.     template<typename T> 
  10.     friend T duty(citizen &);  
  11.  
  12. public:  
  13.     citizen(int id) : id(id) {}  
  14. }; 

在上例中,citizen类声明了一个友元类模板FBI_agent。注意,在此无须为FBI_agent模板做前置声明。有此声明,无论是FBI_agent<Mulder>还是FBI_agent<Scully>,都可以访问到citizen类中的私有函数,比如id。此外,citizen中还声明了友元函数模板duty,无论是duty<military_service>还是duty<tax>,都可以访问甚至修改citizen中的成员,比如money。