注册 登录
编程论坛 C++教室

C++中编程如何选择用const 和static

ziguang 发布于 2010-03-24 19:09, 890 次点击
C++中编程如何选择用const 和static
5 回复
#2
hzh5122010-03-24 19:20
两个不是一码事!
一个变量按存储方法分为auto static register extern四种。
其中static可以声明局部变量也可以声明全局变量。当声明局部变量时表示局部变量的值在函数调用结束时不消失而保留原值。
const表示只读,被其限定的标量不能改变,但在函数调用结束时消失。
const int a;(称谓常变量)这种写法有点问题。当定义常变量时一定要对标量赋值。

在c++中,static静态成员变量不能在类内部初始化。
在c++中,const常量成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。

const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类声明中初始化const数据成员,因为类的对象未被创建时,编译器不知道const 数据成员的值是什么。
const数据成员的初始化只能在类的构造函数的初始化表中进行。要想建立在整个类中都恒定的常量,应该用类中的枚举常量来实现,或者static const。
#3
hzh5122010-03-24 19:22
目前板块正在选版主,希望你能投我一票!支持我一下,谢谢
#4
ziguang2010-03-24 21:15
回复 2楼 hzh512
我的意思是 设计程序时怎样确定哪些定义为static, 那些定义为const
#5
wnq3172010-03-25 15:50
当你定义一个常量的时候用const,如果你学过c的话,const就相当于#define;而static则表示静态变量,它只能在声明它的文件当中可见,不能被其它文件使用。
#6
apull2010-03-25 19:26
如果你不希望在运行中改变一个变量的值,那么让他const。
如果你想在下次进入函数时依然保存一个函数内定义的变量的值,用static。

static声明的变量或函数在程序开始运行时就存在了。
1