不可否认,这样做的原因已经消退,因为C ++ 11已经摆脱了那个令人讨厌的规则 - 我认为它是声明静态const int / char / enum允许你在标题中初始化,但对于所有其他类型你不能。因此我想尝试总结C ++的声明和定义约定。
是否有人能够接受我在下面尝试/做的事情并将其延伸到我错过/得到的任何错误。我想总结各种static / const / int / non-int变量的声明和定义的所有“规则”。理想情况下,这可以放入一些包含3列的表中:数据类型/声明/定义 - 但我不知道如何在这里做到这一点:
静态数据成员(声明)
静态数据成员(定义)
const数据成员(声明)
const数据成员(定义)
static和const 数据成员(声明)
static和const 数据成员(定义)
注意:我理解pre-C ++ 11 int / enum / char曾经有一个关于静态的特殊规则(或者它是静态const?),是否可以在其中初始化头??
答案 0 :(得分:0)
在C ++标准中,const
和volatile
几乎总是“彼此相邻”。特别是,volatile
和const
具有相同的优先顺序和“需要位置”。
Pre C ++ 11(当然还有C ++ 11)你可以初始化const static
个简单类型(例如int
或密切相关的类型,但不能初始化其他类型(那些有构造函数的例子)。