外部模板可以实现模板代码的隐藏
// TC.h
template <typename T>
class TC{
public:
T* get();
private:
T* p_;
};
// TC.cpp
#include "gg.h"
template <typename T>
T* TC<T>::get()
{
return (T*)0;
}
template class TC<int>;
template class TC<double>;template class TC<char>;// abc.cpp TC的使用者#include "TC.h"extern template class TC<int>;
TC<int> tc;int* p = tc.get();这是一个简单的代码隐藏办法,对于abc.cpp来说,完全看不到模板的实现细节了