模板类的相关介绍
大部分资料建议模板类的声明和实现都在.h文件中,这样能够保证正确链接。其实模板类也能够完成声明和实现分离,只是需要额外做一些处理。下面仍然以Stack为例:
//.h
template <class T, int i> class MyStack
{
T StackBuffer;
int cItems;
public:
void MyStack( void ) : cItems( i ) {};
void push( const T item ); T pop( void );
};
//.cpp
template <class T, int i> void MyStack< T, i >::push( const T item )
{...}
template <class T, int i> T MyStack< T, i >::pop( void )
{...}
//在.cpp文件的最后,增加模板声明,把有可能用到的参数组合都进行声明即可
template class MyStack<unsigned int, 100>;
template class MyStack<float, 100>;
...
注意:这样做的缺点是,由于进行了声明,会把每一个参数组合都编译,生成的文件会非常大。
2023-08-01 广告