complex类模板

所有的类模板函数写在类的外部,在一个cpp中
//构造函数 没有问题
//普通函数 没有问题
//友元函数:用友元函数重载 << >>
// friend ostream& operator<< (ostream &out, Complex &c3) ;
//友元函数:友元函数不是实现函数重载(非 << >>)

//1)需要在类前增加 类的前置声明 函数的前置声明

	template
	class Complex;  
	template
	Complex mySub(Complex &c1, Complex &c2);

//2)类的内部声明 必须写成:

friend Complex mySub  (Complex &c1, Complex &c2);

//3)友元函数实现 必须写成:

template
Complex mySub(Complex &c1, Complex &c2)
{
				Complex tmp(c1.a - c2.a, c1.b-c2.b);
				return tmp;
}

//4)友元函数调用 必须写成

Complex c4 = mySub(c1, c2);
cout<

结论:友元函数只用来进行 左移 友移操作符重载。
所有的类模板函数写在类的外部,在不同的.h和.cpp中,
也就是类模板函数说明和类模板实现分开
//类模板函数
构造函数
普通成员函数
友元函数
用友元函数重载<<>>;
用友元函数重载非<< >>
//要包含.cpp

你可能感兴趣的:(C++基础)