模形类什么时候要和那要用到static,举个例子
时间: 2024-03-14 07:42:55 浏览: 15
模板类(泛型类)是一个通用的类模板,其中的类型参数可以通过实例化来指定。在模板类中,有一些成员函数或成员变量是与模板参数无关的,这些成员可以使用静态关键字来定义为静态成员。
例如,下面是一个模板类 Stack 的例子,其中使用了静态成员来计算 Stack 类的实例个数:
```cpp
template <typename T>
class Stack {
private:
static int count; // 静态成员变量,用于计算实例个数
public:
Stack() {
count++;
}
~Stack() {
count--;
}
static int getCount() { // 静态成员函数,用于获取实例个数
return count;
}
};
template <typename T>
int Stack<T>::count = 0; // 静态成员变量初始化
int main() {
Stack<int> s1, s2, s3;
cout << Stack<int>::getCount() << endl; // 输出 3
return 0;
}
```
在上面的代码中,静态成员变量 count 用于计算 Stack 类的实例个数,而静态成员函数 getCount() 用于获取实例个数。在 main 函数中,创建了三个 Stack 的实例,然后使用静态成员函数获取实例个数并输出。
需要注意的是,静态成员变量和静态成员函数都是属于类的,而不是属于类的某个实例。因此,在定义静态成员变量和静态成员函数时,需要在它们的名字前面加上类名和作用域解析符号 `::`,以示区别。