C++中编程如何选择用const 和static
C++中编程如何选择用const 和static
两个不是一码事!
一个变量按存储方法分为auto static register extern四种。
其中static可以声明局部变量也可以声明全局变量。当声明局部变量时表示局部变量的值在函数调用结束时不消失而保留原值。
const表示只读,被其限定的标量不能改变,但在函数调用结束时消失。
const int a;(称谓常变量)这种写法有点问题。当定义常变量时一定要对标量赋值。
在c++中,static静态成员变量不能在类内部初始化。
在c++中,const常量成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。
const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类声明中初始化const数据成员,因为类的对象未被创建时,编译器不知道const 数据成员的值是什么。
const数据成员的初始化只能在类的构造函数的初始化表中进行。要想建立在整个类中都恒定的常量,应该用类中的枚举常量来实现,或者static const。