一.类模板与友元
当友元函数在外部定义时,友元函数以及所属的类必须声明。 友元函数放在类模板的内部时,友元函数可以直接调用,无需加类限定符。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
template<class T>
class A
{
public:
friend void print(A<T> *aa)//声明友元函数
{
cout << (*aa).x << ' ' << (*aa).y << endl;
}
friend void print(A<T> &aa)//声明友元函数
{
cout << aa.x << ' ' << aa.y << endl;
}
friend A *operator+(const A<T> &a, const A<T> &b)
{
A *p = new A(a.x + b.y,a.y + b.y);
return p;
}
A(T t1, T t2) :x(t1), y(t2)
{
}
private:
T x;
T y;
};
void main2()
{
A<string> a1("hello", "world");
print(a1);
A<int> aa(10, 20);
A<int> bb(1, 2);
A<int> *pA = aa + bb;
print(pA);
cin.get();
}
void main1()
{
vector<int> v1;
vector<vector<int&