C++中static和const的作用和用法.docx
第
C++中static和const的作用和用法
static:静态变量(staticvariable):在函数内部声明的静态变量在程序执行期间保持其值,而不会在函数调用结束后销毁。静态变量只初始化一次,然后可以在后续函数调用中使用其最新值。
voidfoo(){
staticintcounter=0;
counter++;
coutCounter:counterendl;
intmain(){
foo();//输出:Counter:1
foo();//输出:Counter:2
return0;
}
上述代码中,静态变量counter在每次调用foo()时保持其值,并在每次调用后递增。
静态函数(staticfunction):在类中声明的静态函数与类的对象实例无关,可以直接通过类名访问。静态函数不能访问非静态成员变量,因为它们没有this指针。
classMathUtils{
public:
staticintadd(inta,intb){
returna+b;
intmain(){
intresult=MathUtils::add(3,5);
coutResult:resultendl;//输出:Result:8
return0;
}
在上述代码中,add()函数是一个静态函数,我们可以直接使用MathUtils::add()进行调用。
const:
常量变量(constvariable):用const修饰的变量表示其值在程序执行期间是不可修改的。
常量必须在声明时进行初始化,并且不能在后续代码中修改其值。
intmain(){
constintMAX_VALUE=100;
//MAX_VALUE=200;//错误,不能修改常量的值
coutMaxvalue:MAX_VALUEendl;//输出:Maxvalue:100
return0;
}
在上述代码中,MAX_VALUE被声明为常量,一旦初始化后,其值将保持不变。
常量引用(constreference):用const修饰的引用参数表示函数不会修改传入的参数值。
voidprintMessage(conststringmessage){
coutMessage:messageendl;
intmain(){
stringgreeting=Hello!;
printMessage(greeting);//输出:Message:Hello!
return0;
}
在上述代码中,printMessage()函数接受一个常量引用参数message,保证函数内部不会修改greeting的值。
总结:
static用于创建静态变量和静态函数,静态变量在程序执行期间保持其值,静态函数与类的对象实例无关。const用于创建常量变量和常量引用,常量变量的值在初始化后不可修改,常量引用表示函数不会修改传入的参数值。
static和const在类中的应用:
const:
在C++中,const成员变量的初始化需要在类的构造函数初始化列表(constructorinitializationlist)中进行,而不能在构造函数的函数体内进行赋值操作。
以下是一个示例代码,演示了如何初始化const成员变量:
classMyClass{
private:
constintmyConstant;
public:
//构造函数
MyClass(intvalue):myConstant(value){
//在构造函数的初始化列表中对const成员变量进行初始化
//可以使用参数或者其他表达式来赋值给const成员变量
//构造函数的函数体内不能对const成员变量赋值
voidprintConstant(){
coutConstantvalue:myConstantendl;
intmain(){
MyClassobj(42);
obj.printConstant();//输出:Constantvalue:42
return0;
}
在上述代码中,MyClass类有一个私有的const成员变量myConstant。构造函数MyClass(intvalue)中,在构造函数的初始化列表中使用参数value来初始化myCo