官术网_书友最值得收藏!

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.

主站蜘蛛池模板: 历史| 根河市| 黎城县| 若羌县| 枝江市| 阿瓦提县| 突泉县| 盐山县| 鸡西市| 金秀| 鲁山县| 阿荣旗| 铜鼓县| 江华| 南部县| 壤塘县| 敖汉旗| 土默特右旗| 内丘县| 宿州市| 丹棱县| 荔波县| 东乌| 屯留县| 正镶白旗| 霞浦县| 新乡县| 丰顺县| 福泉市| 东兰县| 芦山县| 祥云县| 石家庄市| 桂东县| 德庆县| 桂东县| 福建省| 新蔡县| 临夏县| 甘德县| 神木县|