2020-11-08

c++ const总结

const可以修饰变量 指针 成员函数 类

  1. const变量
    const全局变量
    const全局变量存储在常量区 常量区是只读存储区 不能被修改 生命周期和源程序生命周期相同
    const局部变量
    const局部变量存储在栈区
    不能显式直接修改 可以隐式修改

    int b=3;
    const int* a=&b;
    cout<<*a<<endl; //3
    b=4;
    cout<<*a<<endl; //4

  2. const指针
    const指针包括两种
    指向常量的指针和常量指针 //说法1
    指针常量和常量指针 //说法2
    说法2中的指针常量其实就是说法1中的常量指针 这是因为中文的语法有歧义所以有这两种表达方式
    指向常量的指针
    const int a;
    常量指针
    int
    const a;

顶层const 顶层const其实就是指针自己是个const
底层const 底层const其实就是指针指向的对象是个const

顶层const在函数传参或者赋值的时候可以忽略
底层const不会

例如
int b=1;
const int* a=&b;//底层
int *const aa=&b;//顶层
int *p1=a;//错误底层const在赋值时候必须有一致类型
int *p2=aa;//正确

底层const const int* a; *a的值是可以改变的 虽然不能直接用 a=tem来赋值 但是可以改变a的地址 来达到改变a的效果 例如
int b=1;
int c=2;
const int *a=&b;
a=&c;

  1. const引用
    int b=1;
    const int &a=b;//合法
    int &c=a;//非法
    非常量可以被常量引用
    常量不能被非常量引用
    引用的底层原理是一个常量指针 即自身是常量的指针 这样才能实现其对象绑定的功能 不能再引用其他的变量

  2. const成员函数
    const成员函数 不能修改成员变量 原因是给const成员函数传递的this指针是一个指向常量的this指针 因此不能修改其成员变量
    但是const成员函数可以修改其他对象的值 全局变量的值 静态变量的值

  3. const类
    const类只能调用const成员函数 只能访问const成员变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值