头文件中的类声明和实现

Class declaration and implementation in the header file

本文关键字:声明 实现 文件      更新时间:2023-10-16

我在大学有作业。我的任务是完成两个头文件,实现给定的类。在这些头文件中实现很重要,因为它将由单元测试进行测试,并且只会测试头文件。

假设我有这个 .h 文件:

#pragma once
template<class T>
class RareVector;
template<class T>
class Vector
{
public:
Vector(){}
Vector(int dim);
Vector(T *t, int dim);
Vector(const Vector&);
~ Vector();
Vector operator+(const Vector&);
Vector operator-(const Vector&);
double operator*(const Vector&);
double operator~();
double operator%(const Vector&);
T      operator[](int) const;
operator RareVector<T>();
private:
T*  m_t;
int m_dim;
};

我的问题是:实现这些类的唯一位置是在声明处,或者我可以在下面的某个地方做这样的事情:

template <class T>
Vector<T>::Vector(){
// code goes here
}

您可以使用内联来实现声明之外的函数...

template<class T>
class Vector
{
public:
Vector(){}
Vector(int dim);
inline Vector(T *t, int dim);
Vector(const Vector&);
~ Vector();
Vector operator+(const Vector&);
...
};

template<class T>
inline Vector::Vector(T *t, int dim)
{
}