类的静态数据成员初始化问题
2016-03-13 10:52
190 查看
1. 静态数据成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域运算符来指出静态成员所属的类。但如果静态成员是整形const或枚举型const,则可以在类声明中初始化。
C++ primer plus P426-P427类静态成员的声明和初始化
//strnbad.h
class StringBad
{
private:
static int num_strings;
…
};
//strnbad.cpp
int StringBad::num_strings = 0;
不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。请注意,初始化语句指出了类型,并使用了作用域运算符,但没有使用关键字static。初始化是在方法文件中,而不是在类声明文件中进行的,如果在头文件中,当头文件被包括在其他几个文件中时,将出现多个初始化副本,从而引发错误。
C++ primer plus P426-P427类静态成员的声明和初始化
//strnbad.h
class StringBad
{
private:
static int num_strings;
…
};
//strnbad.cpp
int StringBad::num_strings = 0;
不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。请注意,初始化语句指出了类型,并使用了作用域运算符,但没有使用关键字static。初始化是在方法文件中,而不是在类声明文件中进行的,如果在头文件中,当头文件被包括在其他几个文件中时,将出现多个初始化副本,从而引发错误。
相关文章推荐
- HDU1021Fibonacci Again
- 【Xcode使用技巧】Xcode环境变量(environment variables)
- 欢迎使用CSDN-markdown编辑器
- Android6.0权限管理-PermissionsDispatcher
- SZU2
- DSS中间件介绍
- Linux基础--权限管理
- 项目四-用循环求(1)
- MySQL数据库总结(2)增删改查
- 12.程序运行为啥需要内存
- Java系统调优:内存管理与垃圾回收
- android ui
- 浏览器工作原理详解
- BaseAdapter的使用与优化
- 计数排序、桶排序和基数排序
- 试用EVGA公版GTX980
- 堆优化SPFA
- c++11的使用心得(二)---右值引用
- Bootstrap 栅格系统
- 在RHEL7或者OL7上,Documents Fail to Index with DRG-11207: user filter command exited with status 127