美文网首页
const 关键字的学习

const 关键字的学习

作者: yanlong107 | 来源:发表于2020-07-15 20:03 被阅读0次

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

    const int  a = 7; 
    int  b = a; // 正确
    a = 8;       // 错误,不能改变
    

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

    二、const 修饰指针变量

    1. const 修饰指针指向的内容,则内容为不可变量

    const int *p = 8;
    

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

    2. const 修饰指针,则指针为不可变量

    int a = 8;
    int* const p = &a;
    *p = 9; // 正确
    int  b = 7;
    p = &b; // 错误
    

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

    3. const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量

    int a = 8;
    const int * const  p = &a;
    

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

    三、const 修饰传递参数

    1. 值传递的 const 修饰传递,一般这种情况不需要 const 修饰,因为函数会自动产生临时变量复制实参值

    #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 参数为指针时,可以防止指针被意外篡改

    #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 成员函数:

    #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

    相关文章

      网友评论

          本文标题:const 关键字的学习

          本文链接:https://www.haomeiwen.com/subject/bwlightx.html