目录
C++中模板类的静态成员
为什么需要模板类的静态成员?
模板类的静态成员和普通类,普通函数的静态成员一样,我们想在函数调用后留些信息,而且这些信息随着函数调用的次数发生改变,也就说函数或者类对象执行完后,并没有完全消除而是留下了一下踪迹,比如:函数调用次数,对象声明次数……等等。以类为例,这些变量为静态变量,他在所有类对象中存在,我们可以再每个对象中对其作出修改,可以作为对象之间沟通的桥梁。
代码示例
主要展示了如何初始静态化成员和处理静态变量的静态成员函数
#include <iostream>
#include <string>
using namespace std;
template <typename Type1, typename Type2>
class Cstudent
{
private:
Type1 math;
static Type2 PersonNumber;
public:
static Type2 ShowNumber();
Cstudent(Type1 math)
{
this->math = math;
}
~Cstudent()
{
cout << "调用析构函数" << endl;
}
};
template <typename Type1, typename Type2> Type2 Cstudent<Type1,Type2>::PersonNumber = 0; // 类模板的成员变量初始化方式
template <typename Type1, typename Type2> Type2 Cstudent<Type1, Type2>::ShowNumber() // 类模板的成员函数类外定义的方式
{
return ++PersonNumber;
}
int main()
{
int PersonNumber = 0;
Cstudent<string, int> stud("超级霸霸强");
PersonNumber = Cstudent<string, int>::ShowNumber();
cout << "学生总人数为" << PersonNumber << endl;
}
注:模板类也是类,类的静态成员变量应该在类外初始化,静态成员函数应该在类外定义,且在类内声明。千万要注意静态成员变量在类体外定义的形式!