static的作用是将类的成员修饰成静态的,所谓的静态类成员就是指类的成员为类级别的,不需要实例化对象就可以使用,而且类的所有对象都共享同一个静态类成员,因为类静态成员是属于类而不是对象。
#include <iostream> using namespace std; template <typename T> class TextClass { public: TextClass(T y) { this->n_y = y; } static int n_x; private: T n_y; }; template <class T> int TextClass<T>::n_x = 0; int main(int argc, char **argv) { return 0; }
static成员是属于类模板具体化的类,而不是类模板本身。对于非静态数据成员,每个类对象都有自己的拷贝.而静态数据成员被当做是类的成员,无论这个类被定义了多少个,静态数据成员都只有一份拷贝,为该类型的所有对象所共享(包括其派生类),所以,静态数据成员的值对每个对象都是一样的,它的值可以更新。因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以它不属于特定的类对象,在没有产生类对象前就可以使用。而静态成员函数与普通的成员函数相比,静态成员函数由于不是与任何的对象相联