前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >const 关键字的学习

const 关键字的学习

作者头像
艳龙
发布2021-12-16 17:50:06
2070
发布2021-12-16 17:50:06
举报
文章被收录于专栏:yanlongli_艳龙

一、const 修饰普通类型的变量

代码语言:javascript
复制
const int  a = 7; 
int  b = a; // 正确
a = 8;       // 错误,不能改变

a 被定义为一个常量,并且可以将 a 赋值给 b,但是不能给 a 再次赋值。对一个常量赋值是违法的事情,因为 a 被编译器认为是一个常量,其值不允许修改。

二、const 修饰指针变量

1. const 修饰指针指向的内容,则内容为不可变量
代码语言:javascript
复制
const int *p = 8;

指针指向的内容 8 不可改变。简称左定值,因为 const 位于 * 号的左边

2. const 修饰指针,则指针为不可变量
代码语言:javascript
复制
int a = 8;
int* const p = &a;
*p = 9; // 正确
int  b = 7;
p = &b; // 错误

对于 const 指针 p 其指向的内存地址不能够被改变,但其内容可以改变。简称,右定向。因为 const 位于 * 号的右边

3. const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量
代码语言:javascript
复制
int a = 8;
const int * const  p = &a;

这时,const p 的指向的内容和指向的内存地址都已固定,不可改变

三、const 修饰传递参数

1. 值传递的 const 修饰传递,一般这种情况不需要 const 修饰,因为函数会自动产生临时变量复制实参值
代码语言:javascript
复制
#include<iostream>
 
using namespace std;
 
void Cpf(const int a)
{
    cout<<a;
    // ++a;  是错误的,a 不能被改变
}
 
int main(void)
 
{
    Cpf(8);
    system("pause");
    return 0;
}
2. const 参数为指针时,可以防止指针被意外篡改
代码语言:javascript
复制
#include<iostream>
 
using namespace std;
 
void Cpf(int *const a)
{
    cout<<*a<<" ";
    *a = 9;
}
 
int main(void)
{
    int a = 8;
    Cpf(&a);
    cout<<a; // a 为 9
    system("pause");
    return 0;
}

三、const 修饰类成员函数

const 修饰类成员函数,其目的是防止成员函数修改被调用对象的值,如果我们不想修改一个调用对象的值,所有的成员函数都应当声明为 const 成员函数。 下面的 get_cm()const; 函数用到了 const 成员函数:

代码语言:javascript
复制
#include<iostream>
 
using namespace std;
 
class Test
{
public:
    Test(){}
    Test(int _m):_cm(_m){}
    int get_cm()const
    {
       return _cm;
    }
 
private:
    int _cm;
};
 
 
 
void Cmf(const Test& _tt)
{
    cout<<_tt.get_cm();
}
 
int main(void)
{
    Test t(8);
    Cmf(t);
    system("pause");
    return 0;
}

参考文章: https://www.runoob.com/w3cnote/cpp-const-keyword.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/7/15 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、const 修饰普通类型的变量
  • 二、const 修饰指针变量
    • 1. const 修饰指针指向的内容,则内容为不可变量
      • 2. const 修饰指针,则指针为不可变量
        • 3. const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量
        • 三、const 修饰传递参数
          • 1. 值传递的 const 修饰传递,一般这种情况不需要 const 修饰,因为函数会自动产生临时变量复制实参值
            • 2. const 参数为指针时,可以防止指针被意外篡改
            • 三、const 修饰类成员函数
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档