class专属常量的声明和定义有两种方式:
一种是in-class initialization 方式,这种方式只适用于: (三者同时满足)
- 1.新式编译器
- 2.integral type(ints, chars, bools)(floats, doubles有些例外,它支持这种方式,但要求类外部一定要有定义式)
- 3.static const
这种定义方式只需要在类定义段中提供声明即可。 static const int maxSize = 10;
如果要取此成员的地址,需要在类定义外加上这个变量的定义式: const int maxSize; (sizeof不包括在内,也就是即使计算这个成员的sizeof也一样能不需要写定义式)
目前的Gun编译器支持这种方式的定义
一种是非in-class initialization方式:
它适用于其他的类内的static const类型的定义.
定义方式: 在类定义内声明: static const string title;
然后在类外定义: const string title = "using const";
enum hack可以解决const 无法解决的一些问题,比如在类中声明数组,而数组的长度需要用const常量来表示,而编译器正好不支持in-class initialization定义方式,这时需要使用enum hack。enum{maxSize = 10}。 初始化的值必须是integer类型(不包括float, double),而且使用sizeof(maxSize)测试名字长度,有结果,而且总是4(eclipse3.3中验证通过)
对于const或者非const对象都可以调用const 成员函数,而非const成员函数则只能对非const对象调用。
问: 如何定义const 类型的类内成员变量?(注意:非static的,虽然这种要求很荒谬)
分享到:
相关推荐
【温故而知新】HTML5 应用程序缓存
温故而知新《温故而知新》有三解。一为《温故才知新》温习已学的知识,并由此获得新的领悟二为《温故及知新》一方面要温习典章故事,又方面又努力获取新的知识。三为,温故,知新。随着自己阅读经历的丰富和理解能力...
CPU 技术温故而知新.pdf
❀设计模式温故而知新❀
【温故而知新】Document对象
【温故而知新】JavaScript事件循环
【温故而知新】HTML5 WebSocket
【温故而知新】JavaScript数据类型
【温故而知新】JavaScript作用域
【温故而知新】JavaScript的事件模型
【温故而知新】JavaScript的DOM操作
【温故而知新】JavaScript数据结构详解
【温故而知新】JavaScript函数式编程
【温故而知新】HTML5新标签canvas、MathML
【温故而知新】JavaScript的防抖与节流
【温故而知新】JavaScript的类型转换机制
【温故而知新】HTML5 服务器发送事件
【温故而知新】HTML5的Web Worker
【温故而知新】JavaScript的继承方式有那些
【温故而知新】HTML5的Video:Audio