C++ 模板函数 成员模板 inline模板 头文件源文件分离
想要实现一个头文件和源文件分离的工程,这里面需要用到模板函数,确切的说应该是成员模板,而且因为是函数体比较小,所以想设置成 inline函数
。
在网络上找了很多的例子,都没有把头文件分离的模板函数给讲清楚,所以自己研究了一下《C++ primer》亲自学习实验一下,以下是代码实例
// test.h
#include <iostream>
class COMMON
{
public:
explicit COMMON(); // 显式构造函数
~COMMON(); //默认的析构函数
template <typename T>
inline T Sum(const T& lef, const T& rig)
{
return lef + rig;
}
template <typename T>
T Max(const T& lef, const T& rig);
};
// test.cc
#include "ts.h"
COMMON::COMMON()
{
std::cout << "default " << __func__ << std::endl;
}
COMMON::~COMMON()
{
std::cout << "default " << __func__ << std::endl;
}
template <typename T>
T COMMON::Max(const T& lef, const T& rig)
{
return lef > rig ? lef : rig;
}
// 测试程序
int main()
{
COMMON a;
std::cout << a.Sum(1.1, 2.2) << std::endl;
std::cout << a.Sum(1, 1) << std::endl;
std::cout << a.Max(1, 2) << std::endl;
std::cout << a.Max(1.1, 2.2) << std::endl;
std::cout << a.Max('a', 'b') << std::endl;
std::string a1 = "t1", a2 = "t2";
std::cout << a.Max(a1, a2) << std::endl;
return 0;
}
运行结果
default COMMON
3.3
2
2
2.2
b
t2
default ~COMMON