42 lines
606 B
C++
42 lines
606 B
C++
|
// 友元函数模板
|
||
|
/*
|
||
|
格式 :
|
||
|
template <typename T>
|
||
|
friend 返回值类型 函数名(T &参数名);
|
||
|
*/
|
||
|
#include <iostream>
|
||
|
using namespace std;
|
||
|
|
||
|
template <typename T>
|
||
|
class A
|
||
|
{
|
||
|
// 友元函数模板,声明的友元函数名不需要加<>空泛型
|
||
|
template <typename U>
|
||
|
friend void show(A<U> &a);
|
||
|
|
||
|
private:
|
||
|
T item;
|
||
|
|
||
|
public:
|
||
|
A(T item)
|
||
|
{
|
||
|
this->item = item;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
template <typename U>
|
||
|
void show(A<U> &a)
|
||
|
{
|
||
|
cout << "template friend item is: " << a.item << endl;
|
||
|
}
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
A<int> a(15);
|
||
|
show(a);
|
||
|
|
||
|
A<float> b(15.5);
|
||
|
show(b);
|
||
|
|
||
|
return 0;
|
||
|
}
|