翻译一下:只有静态整型常量数据成员能在类中初始化

那么哪些数据属于整型呢,下面的都是

  • char
  • short
  • int
  • long
  • long long

所以只有以上这些类型的数据能在类中初始化,也就是你可以这样写

1 class Test
2 {
3     static const int i = 100 ;
4 } ;

但不能这样写,否则就会出现如标题所示的编译错误。

1 class Test
2 {
3     static const float i = 100.0f ;
4 } ;

因为float不属于integral type,对于float类型可以在类中定义,在类外初始化,如下:

class Test
{static const int i = 100 ;static const float f;
};const float Test::f = 1.0f;

另外要注意的是,bool也可以在类中初始化,像下面这样

1 class Test
2 {
3     static const bool flag = true ;
4 } ;

但是我却没有找到bool是integral type的说法,bool的值有两种,true和false,对应二进制的0和1,用一个bit就可以表示了,但是C++中长度最短的类型是char,所以只能用char表示,而char属于整型,是不是这样就把bool也归为整型了呢?猜测而已。

另外,C++标准对于哪些类型能在类中初始化有详细的描述,如下:

If a static data member is of const integral or const enumeration type, its declaration in the class definition can specify a constant-initializer which
shall be an integral constant expression

所以不只整型常量可以,枚举常量也可以在类中初始化,像下面这样

 1 enum COLOR
 2 {
 3     RED, 
 4     GREEN,
 5     BLUE
 6 } ;
 7 
 8 class Test
 9 {
10     static const COLOR color = GREEN ;
11 } ;

转载于:https://www.cnblogs.com/graphics/archive/2010/03/04/1677991.html

only static const integral data members can be initialized within a class相关推荐

  1. C++ static、const和static const类型成员变量声明及其初始化

    C++ static.const和static const类型成员变量声明及其初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. ...

  2. Effective C#: Item 1 Always use properties instead of accessible data members

    Effective C#: Item 1 Always use properties instead of accessible data members Item 1: 当设计类时,永远用Prope ...

  3. [c++基础] const char and static const char

    部分内容摘自:https://blog.csdn.net/ranhui_xia/article/details/32696669 The version with const char * will ...

  4. 利用反射获得类的public static/const成员的值

    首先,我们定义一个类: class CDynamic{ #if truepublic const string TableName = "p_battlerecord"; // O ...

  5. 以下关于c语言中static和const,c语言中static const作用

    c语言中static const作用 (2012-06-21 07:51:08) 标签: it 关键字static: 1. 在函数体内,一个被声明为静态的变量在这一个函数被调用的过程中维持其值不变. ...

  6. C++ static、const和static const 以及它们的初始化

    const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. static表示的是静态的.类的静态成员函数.静态成员变量是和类相关的,而不是和类的 ...

  7. Unknown integral data type for ids : java.lang.String; nested exception is org.hibernate.id.Identifi

    1.发生的异常内容: org.springframework.orm.hibernate5.HibernateSystemException: Unknown integral data type f ...

  8. static, const, static const 与 const static

    1. static const/ const static, 意义一样 namespace NdpiTransformersTest{class TestMain{public: ~TestMain( ...

  9. Integrating Static and Time-Series Data in Deep Recurrent Models for Oncology Early Warning Systems

    标题 :[CIKM 2021] Integrating Static and Time-Series Data in Deep Recurrent Models for Oncology Early ...

最新文章

  1. ios的并发队列控制库
  2. 月薪 5 万清华姚班 NOI 金牌得主在线征友被群嘲,当代互联网相亲有多难
  3. C语言复习篇之数组与指针
  4. 锐捷交换机清除mac-address-table(mac地址表)
  5. 数据中心操作运营贴士:确保生命安全
  6. Android高级开发专题晋升班
  7. linux 禁用smb服务,Samba 4.11 发布,更好的可扩展性与默认禁用SMB1
  8. php手机网站底部导航代码,jQuery微信手机端底部弹出导航菜单列表代码
  9. TurboMail邮件系统提醒广大用户小心DXXD勒索邮件
  10. 群晖nas服务器的虚拟机,黑群晖NAS 6.1.6 虚拟机VMWARE傻瓜教程
  11. diskgenius创建efi分区_无损分区大小调整
  12. Linux中Tomcat的安装及配置
  13. CI框架redirect自动加上了index.php问题
  14. 经济应用文写作【9】
  15. 格创东智获《互联网周刊》2020工业互联网平台TOP12 解决方案提供商TOP16
  16. Linux系统屏幕出现错位重影,win10屏幕出现错位重影怎么办
  17. 爬虫小程序 - 周杰伦歌曲
  18. 【转】刨根究底字符编码之八——Unicode编码方案概述
  19. android刮刮乐游戏布局,Android实现 刮刮乐效果
  20. 我的一次意义不同的旅行

热门文章

  1. unix mysql_Unix和Mysql中列出的数据库大小之间存在差异
  2. PF_PACKET和AF_PACKET
  3. linux存储--inode与block详解(八)
  4. 安卓linux定时执行脚本,Android开机自动执行shell脚本
  5. C语言主应用程序在哪设置,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  6. Drupal 网站漏洞修复以及网站安全防护加固方法
  7. 聊聊webflux参数校验
  8. django 1.9 后台中文界面
  9. windows操作系统自带的TCP端口转发
  10. 各种语言下 static 详解