针对于所有的函数都在类的外部,但是都在一个cpp文件中的这种情形,只有友元函数的存在是比较特殊和难处理的。
(1) 类中只有成员函数的情况
代码如下,注意代码的书写规则:
#include <iostream>
using namespace std;
template <typename T>
class Complex
{
public:
Complex(T a, T b);
void printCom();
Complex operator+ (Complex& c2);
private:
T a;
T b;
};
//构造函数的实现 写在了类的外部
template <typename T>
Complex<T>::Complex(T a, T b)
{
this->a = a;
this->b = b;
}
template <typename T>
void Complex<T>::printCom()
{
cout << "a:" << a << " b: " << b << endl;
}
//本质是 : 模板是两次 编译生成的 第一次生成的函数头 和第二次生成的函数头 不一样
//成员函数 实现 +运算符重载
template <typename T>
Complex<T> Complex<T>::operator+ (Complex<T>& c2)
{
Complex tmp(a + c2.a, b + c2.b);
return tmp;
}
void main()
{
//需要把模板类 进行具体化以后 才能定义对象 C++编译器要分配内存