假如有一个 接口 Polynomial.h,
class CPolynomial
{
public:
CPolynomial();
virtual ~CPolynomial();
CPolynomial(string file); // initialization using file
CPolynomial(const CPolynomial &other);
void Print();
// overload
CPolynomial operator+(const CPolynomial &right ) const; //Overload operator +
CPolynomial& operator=(const CPolynomial &right ); //Overload operator =
};
那么它对应的一个接口实现Polynomial.cpp
CPolynomial::CPolynomial()
{
//具体函数体
}
CPolynomial::~CPolynomial()
{
//具体函数体
}
CPolynomial::CPolynomial(string file)
{
//具体函数体
}
CPolynomial::CPolynomial(const CPolynomial &other)
{
//具体函数体
}
void CPolynomial::Print()
{
//具体函数体
}
CPolynomial CPolynomial :: operator+(const CPolynomial &right ) const
{
//具体函数体
}
CPolynomial& CPolynomial:: operator=(const CPolynomial &right )
{
//具体函数体
}
简单来说就是:
1.
定义的什么返回类型,接口实现的返回类型也是啥,还有紧接其后的类型名称以及作用域符号,如
void print();
void CPolynomial::print()
{
//具体函数实现
}
2.重载运算符的,如
CPolynomial operator+(const CPolynomial &right ) const;
CPolynomial CPolynomial :: operator+(const CPolynomial &right ) const
{
//具体函数体
}
CPolynomial& operator=(const CPolynomial &right );
CPolynomial& CPolynomial:: operator=(const CPolynomial &right )
{
//具体函数体
}
就是在 operator前 加一个 CPolynomial:: 嘛。
3.构造函数、析构函数
CPolynomial();
CPolynomial::CPolynomial(void)
{
//具体函数体
}
CPolynomial::virtual ~CPolynomial()
{
//具体函数体
}
把 ; 去掉,接口开始位置 类名::,然后加上 {//具体函数体} 就完事儿了。
4.templa模板类,emmm…这个一言难尽。
.cpp文件只需要将头文件.h包含进去就可。不能再.cpp里进行接口实现,接口实现要写在.h里面。
如图:注意下面对应的是哪个文件哦~
接下来的是模板定义
看一下它的接口:
接口实现:
模板类,假设我们平常使用的类是CDArray,那么我们在使用了模板,把模板定义为 T 的情况下。以后使用这个CDArray类 就用CDArray<T> 来代替。之后接口实现就跟普通的类实现没什么两样了。
努力努力在努力我要变成万人迷,wowowowo~