这篇文章将为大家详细讲解有关C++中怎么初始化类静态成员,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
C++类静态成员初始化相关实现代码介绍:
class mytestclass { public: const static int i = 5; }; int main() { std::cout<<mytestclass::i<<std::endl; return 0; }
结果没有问题,输出为5(编译器为vc7.1),但是在下面这个例子中:
int regi() { return 5; } class mytestclass { public: const static int i = regi(); }; int main() { std::cout<<mytestclass::i<<std::endl; return 0; }
输出却不正确,输出为0(编译链接都没有问题)。。。,似乎代码并没有执行regi函数?
在C++类静态成员初始化中初始化变量分为"动态初始化"和"静态初始化","动态初始化"为利用函数进行初始化,"静态初始化"为常量表达式进行初始化. C++标准对于类中的常量表达式的"动态初始化"似乎并未做说明,所以是否支持类中常数静态变量的动态初始化也就取决与编译器的设计了. 但是无论如何vc7.1的编译结果都是不对的,它并没有给出错误,但是结果与逻辑不向符合,这应该是vc7.1的一个bug.(在vs2005中的C++编译器已经修正了这个bug,给出了一个编译Error)
关于C++中怎么初始化类静态成员就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。