- Expert C++
- Vardan Grigoryan Shunguang Wu
- 221字
- 2025-04-04 13:09:42
Syntax
The syntax for creating a class template is as follows:
[export] template <template_parameter_list> class-declaration
Here, we have the following:
- template_parameter-list (see the link in further reading context [10]) is a non-empty comma-separated list of the template parameters, each of which is either a non-type parameter, a type parameter, a template parameter, or a parameter pack of any of those.
- class-declaration is the part that's used to declare a class that contains a class name and its body in curly brackets. By doing so, the declared class name also becomes a template name.
For example, we can define a class template, V, so that it contains all kinds of 1D data types:
template <class T>
class V {
public:
V( int n = 0) : m_nEle(n), m_buf(0) { creatBuf();}
~V(){ deleteBuf(); }
V& operator = (const V &rhs) { /* ... */}
V& operator = (const V &rhs) { /* ... */}
T getMax(){ /* ... */ }
protected:
void creatBuf() { /* ... */}
void deleteBuf(){ /* ... */}
public:
int m_nEle;
T * m_buf;
};
Once we have this class template, the compiler can generate classes during the instantiation process. For the reason we mentioned in the Function template subsection, we will avoid using the imprecise term template class in this book. Instead, we will use the class template.