今天分享C/C++中的const关键字,这个关键字有着不少的作用,以下是const的几种主要用法:
一、修饰变量
1.定义常量:
const int num = 10; 这里 num 被const修饰定义成了一个常量整数,它的值在程序运行过程中不能被改变。
2.指向常量的指针:
const int* ptr; 指针指向一个常量整数,不能通过这个指针来修改它所指向的值。例如:
int a = 5;
const int * ptr = &a;
//*ptr = 6; 会报错,不能通过指针修改指向的常量值。
3.常量指针:
int * const ptr; 这个指针本身是常量,一旦初始化后不能再指向其它内存地址。例如:
int a = 5, b = 10;
int * const ptr = &a;
// *ptr = &b; 会报错,不能改变指针指向的地址
4.指向常量的常量指针:
const int * const ptr; 指针本身是常量且指向一个常量整数,既不能改变指针指向的地址,也不能通过指针修改指向的值!
二、修饰函数参数
1.防止参数被函数内部修改:
比如 void func(const int arg); 在函数内部不能修改arg的值。
三、修饰函数返回值
1.返回常量值:
例如 const int func(); 表示函数返回一个常量整数,不能通过返回值修改这个值。
2.返回指向常量的指针:
const int* fuc(); 函数返回一个指向常量整数的指针,不能通过这个指针修改所指向的值。
四、修饰类成员
1.常量成员变量:
在类中可以定义常量成员变量,但是必须在构造函数初始化列表中进行初始化,例如:
class Myclass{
public:
const int num;
Myclass(int n) : num(n){}
};
2.常量成员函数:
int getValue() const; 表示这个成员函数不能修改类的成员变量。在常量对象上只能调用常量成员函数。例如:
class Myclass{
private:
int value;
public:
MyClass(int v) : value(v){}
int getValue() const {return value;}
};
int main(void){
const Myclass obj(10);
//obj.value = 20; 会报错,不能修改常量对象的成员变量
int val = obj.getValue(); //可以调用常量成员函数
return 0;
}
若有问题还望指出😘