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?????????????

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网