c++ - class template default parameters

1510 ワード

the template has parameter, it can contains type paramter and it can also have nontype paramter, in the following code. 
 
template <class Type, int size>
class Buffer;

 
the class template buffer has two paramter, one is the non-determinic parameter, which is Type, and one nontype (which means the type itself is bound and known, which remains unknown is only the vlaue of the nontype parameter).
 
As for the function parameter, you can also provide default value for template class, for the type paramter, the default value is type, while for the non-type parameter, the default value is value.
 
Let's see the example below. 
 
/**
* file: 
*  default_template_parameters.h
*
* description:
*  this file shows that you can provide default paramter value for either the type parameter or the nontype parameter
*/

#include<string>
using std::string;

template <class Type, int size = 1024>
class Buffer;

template <class Type = string, int size /* you don't need to provide "= 1024" */>
class Buffer;
//template <class Type = string, int size = 1024>
//class Buffer;

template <class Type, int size>
class Buffer
{
public:
	Buffer() : _size(size) {}
private:
	Type elem;
	int _size;
protected:
};