[1.x] 函数模板Function Template
| ```cpp
// eg : swap() template
template
<br />- `template`语句需要**单独成行**,其中`class`有时也写成`type`,`T`可以更换<br />- `template < class xxx >`影响的是它以下的那块部分<br />- 模板又叫**元代码**,检测到需求时,会将模板**实例化**一个部分来实现这个需求<br />- 需要注意,当使用模板时,必须要求每一个实例中`T`必须一样<br />```cpp
template < class T >
void funName(T x){
T y;
// ...
}
template < class T >
void myFun(T x, T y){
// ...
}
// myFun('c',1.0); 会报错,因为两个参数类型不一样,但模板要求两个参数类型一样
- 当参数中没有T
但是函数内部会用到的时候,可用尖括号指明类型
```cpp
template < class T >
void fun( void ){
//…
}
// fun
|
| --- |
<a name="GV488"></a>
# [2.x] 类模板Class Template
| ```cpp
// eg : vector template
template < class T >
class Vector{
public:
Vector(int);
~Vector();
Vector(const Vector&);
Vector &operator=(const Vector&);
T &operator[](int);
private:
T *m_elements;
int m_size;
};
- 需要**注意**:template
语句属于声明,需要放在.h
中
|
| —- |
[3.x] 元函数Meta Function
[大一寒假] Stanford CS 106L - Standard C++ programming
[大一寒假] Stanford CS 106L - Standard C++ programming