作用 | 声明 | 初始化值 | |
static | 作为所有该类对象都可使用的共有变量 | 仅允许在private内声明 | 在类外以 typename classname::variablename=的方式初始化 |
static const | 作为所有该类对象都可使用的共有值 | 可在private和public内声明 | 可在类中声明时初始化 |
在c++ primer plus中是这样描述类内static const的:该常量将与其他静态变量存储在一起,而不是储存在对象中
但是我尝试在public中使用类方法提取static const变量的地址却无法提取,显示没有定义引用
在debug汇编中发现是以立即数的方式调用的。
而在我尝试将static const的类型改为double时,报错了
意思是必须是整形,所以个人认为static const和static有不同性质的原因是static是一个存储的可变的变量,所有拥有变量的各种性质,但是static const可能看起来是变量其实是一个代码区的立即数,所以可以在类中“赋值”,也只能是整型,既然是代码区的立即数,那么自然也没有地址了