// p-15-5-特殊情况 友元函数.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。
//
#include
using namespace std;
template
class A
{
public:
A(T t = 0);
template<typename T>
friend A<T> addA(const A<T>& a, const A<T>& b);
T& getT();
A operator +(const A& other);
void print();
private:
T t;
};
int main()
{
A<int> a(666), b(888);
A<int> tmp = a + b;
A<int>tmp1 =addA(a, b);
tmp.print();
tmp1.print();
}
template
A::A(T t)
{
this->t = t;
}
template
T& A::getT()
{
// TODO: 在此处插入 return 语句
return t;
}
template
A A::operator+(const A& other)
{
A tmp;
tmp.t = this->t + other.t;
return tmp;
}
template
void A::print()
{
cout << this->t << endl;
}
template
A addA(const A& a, const A& b)
{
A tmp;
cout << “call addA()…” << endl;
tmp.t = a.t + b.t;
return tmp;
}