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

记一个知识点类模板和普通的玳码不同,不能用普通的方法实现头文件.h和源文件.cpp文件分离

先讲解决方案,很简单把正常的代码写进头文件的尾端,也就是头文件 #endif  之後

         简而言之,类模板的实现代码只有当已经确定了具体模板的类型才会自动生成代码。而在编译时编译器根本不知道你要设定的类型参数<T>是啥,所以实现代码(.cpp)中的内容实际是不存在的

p.s. 实际上,还有别的方法如使用 #define宏定义直接替换代码(其实和上述方法等同),又或者直接 #include "类名.cpp" 这种简单粗暴的方式我觉不如上述方法直观,并不推荐

}

影响中的一道笔试题总结了下模板类只声明未定义时,在哪些情况会出现编译错误

1、直接实例化对象(只是声明则不会出错),无论用栈还是new编译时都会出错。2、函数定义(只是声明则不会编译错误)中参数或返回值引用实例化该模板对象时非引用和传指针,编译时会出错总结:   定义中直接使鼡类模板的实例模板类而非引用,则在编译时就会对其实例化因为本例中该类模板只有声明没有定义,所以编译时就会出错

}

我要回帖

更多关于 静态成员变量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信