const关键字在编程中具体指代什么,有何特殊用途?
- 内容介绍
- 文章标签
- 相关推荐
本文共计506个文字,预计阅读时间需要3分钟。
1. const修饰普通变量:变量被声明为const后,其值不可更改,具有常量性质。例如: c const int a=10;
2. const修饰指针: - `const int *p1=&a;`:指针`p1`指向变量`a`,但`p1`本身不可更改。 - `int *const p2=&a;`:指针`p2`指向变量`a`,且`p2`本身不可更改。 - `int *const p3=&a;`:与`p2`相同,指针`p3`指向变量`a`,且`p3`本身不可更改。
其中,第一个const修饰的是指针本身,表示指针不可更改。
1、const修饰普通变量
变量变为常变量,具有常数性质的变量。不可以修改(只读)。
2、const修饰指针
int a=10;
const int* p1=&a;
int const *p2=&a;
int* const p3=&a;
第一个const修饰的是*p1,也就是不可以通过指针引用去修改指针所指向变量的值。
第二个与第一个效果相同,写法不一样而已。
第三个const修饰的是指针本身p3,表示指针不可修改。
3、const修饰函数形参
const修饰引用形参
void func(const int& val)
表示无法通过引用修改实参,这里的引用实际是实参的一个别名,没有进行拷贝,保证了外部数据的安全性。
注意:如果函数的参数是非const的引用,则他就不能接受const实参变量,这样会造成权限的放大,如果函数的参数是const指针或引用,则它既可以接受 const的实参变量,也可以接受非const实参变量,权限只能缩小不能放大。
4、const修饰成员变量
表示为成员常量,不能修改,同时他只能在初始化列表中赋值。
5、const修饰成员函数
const成员函数表示不能修改this指针,所指向对象的成员变量也不可以修改,const修饰类成员函数实际上是:const 类类型 *const this,
class data
{
public:
void display()const
{
...;
}
//实际写法
void display(const data *const this)
{
...;
}
本文共计506个文字,预计阅读时间需要3分钟。
1. const修饰普通变量:变量被声明为const后,其值不可更改,具有常量性质。例如: c const int a=10;
2. const修饰指针: - `const int *p1=&a;`:指针`p1`指向变量`a`,但`p1`本身不可更改。 - `int *const p2=&a;`:指针`p2`指向变量`a`,且`p2`本身不可更改。 - `int *const p3=&a;`:与`p2`相同,指针`p3`指向变量`a`,且`p3`本身不可更改。
其中,第一个const修饰的是指针本身,表示指针不可更改。
1、const修饰普通变量
变量变为常变量,具有常数性质的变量。不可以修改(只读)。
2、const修饰指针
int a=10;
const int* p1=&a;
int const *p2=&a;
int* const p3=&a;
第一个const修饰的是*p1,也就是不可以通过指针引用去修改指针所指向变量的值。
第二个与第一个效果相同,写法不一样而已。
第三个const修饰的是指针本身p3,表示指针不可修改。
3、const修饰函数形参
const修饰引用形参
void func(const int& val)
表示无法通过引用修改实参,这里的引用实际是实参的一个别名,没有进行拷贝,保证了外部数据的安全性。
注意:如果函数的参数是非const的引用,则他就不能接受const实参变量,这样会造成权限的放大,如果函数的参数是const指针或引用,则它既可以接受 const的实参变量,也可以接受非const实参变量,权限只能缩小不能放大。
4、const修饰成员变量
表示为成员常量,不能修改,同时他只能在初始化列表中赋值。
5、const修饰成员函数
const成员函数表示不能修改this指针,所指向对象的成员变量也不可以修改,const修饰类成员函数实际上是:const 类类型 *const this,
class data
{
public:
void display()const
{
...;
}
//实际写法
void display(const data *const this)
{
...;
}

