先把正确的写法放上来:
运行结果:
有三点需要注意,三者缺一不可:
首先,在类中基于constexpr声明的常量必需是static的,这是因为constexpr必需在编译阶段就能使用,而普通非static量是存放在内存当中的,显然编译时期是无法访问的。
由于是static类型,只在class里只有声明是无法使用变量的,会出现“undefined symbol”问题,所以需要在源文件中添加常量的定义。
但是源文件中constexpr的常量定义又有点不一样,它的初始化必须在类中的声明里加入,定义的地方反而是没有进行初始化的。
通过sizeof(A)我们可以看到,类A的大小只有1个字节,说明它是一个空类。(空类为了其对象能够寻址会保证至少1个字节占用)