c++模板类中的静态成员变量什么时候会被初始化,如果想要指定其在某个源文件中初始化,要怎么写?

如题所述

模板类中的静态成员变量在定义时不会被初始化,只有赋给它一个确定的值时才会被初始化(分配内存)。


如果想要在某个源文件中初始化 首先要引用这个模板类,然后为这个模板类中的静态成员变量赋值。


template<class T>

class Test{

private:

T n;

const T i;

static T cnt;

};

template<class T>

int Test<T>::cnt = 0;//初始化

追问

你好,现在假设我有一个需求,需要在不同的cpp文件中cnt需要为不同类型赋予不同的值,比如int要为1,double要为3.14,并且由于cnt是静态的,其他cpp源文件可以通过定义的public static函数获取到这个值,从而利用cnt来计算

追答

静态变量也是变量,作用范围在这个类中,作用相当于全局变量,一般来说不用做public变量,建议用private

追问

十分感谢您的回答,其实我是想使用静态成员构造一个在编译期就能构造好的链表,之后就直接查询链表就行。使用extern可以解决我这个问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-01
What?????????????

相似回答
大家正在搜