友元模板
来源:互联网 发布:开淘宝计划书怎么写 编辑:程序博客网 时间:2024/05/17 06:09
C++ 模板专题.pdf:
十、友元和类模板
1、类模板中有普通友元函数,友元类,模板友元函数和友元类,普通友元函数和友元类不做介绍。
2、可以建立两种类模板的友元模板,即约束型的友元模板和非约束型的友元模板。
3、非约束型友元模板:即类模板的友元模板类或者友元模板函数的任一实例都是外围类的任一实例的友元,也就是外围类和友元模板类或友元模板函数之间是多对多的关系
4、约束型友元模板:即类模板的友元模板类或友元模板函数的一个特定实例只是外围类的相关的一个实例的友元。即外围类和友元模板类或友元模板函数之间是一对一的关系。
5、约束型友元模板函数或友元类的建立:比如有前向声明:
template<class T1> void g(T1 a); template<class T2> void g1();template<class T3>class B;//则template<class T>class A{ friend void g<>(T a); friend void g1<T>(); friend class B<T>;};
就建立了三个约束型友元模板,其中g和g1 是函数,而B 是类。注意其中的语法。
这里g<int>型和类A<int>型是一对一的友元关系,g<double>和A<double>是一个一对一的友元关系。
6、非约束型友元模板函数或友元类的建立:非约束型友元模板和外围类具有不同的模板形参,比如
template<class T>classA{template<class T1> friend void g(T1 a); template<class T2> friend class B;};
注意其中的语法,非约束型友元模板都要以template开头。要注意友元模板类,在类名B的后面没有尖括号。
7、不存在部分约束型的友元模板或者友元类:比如
template<class T> class A{template<class T1>friend void g(T1 a, T b);template<class T3>friend class B<T3,T>;}:
其中函数g具有template<class T1,class T2>void g(T1 a,T2 b)的形式。其中的函数g 试图把第二个模板形参部分约束为类A的模板形参类型,但是这是无效的,这种语法的结果是g 函数的非约束型类友元函数,而对类B的友元声明则是一种语法错误。
C++ 模板专题.pdf:
http://download.csdn.net/detail/fdcumt/5794207
- 友元 + 模板
- 模板友元函数
- 友元模板
- 模板与友元
- 友元模板---加
- 模板类的友元模板函数
- 模板类的 友元模板函数
- 类模板遇到友元函数模板
- 友元模板和编译器
- 类模板的友元
- 友元函数模板问题
- 类模板的友元
- 类模板中的友元
- 类模板的友元
- 静态成员,友元,模板
- 模板类和友元
- 模板类和友元
- 模板元
- 修改iis 最大请求长度
- Android 挂断电话流程
- Spring的开始~
- 200个JSP小技巧
- extmail 修改root用户密码
- 友元模板
- C语言全局变量那些事儿
- 首尾相连数组的最大子数组和
- hadoop日志【1】--hive服务和sqoop服务运行
- 处理 CentOS/Linux GLIBCXX_3.4.15 not found error
- 软件测试方法
- 表单提交方式get与post的区别
- C++ 对象的内存布局(下)
- errno.h