c++const解析-面试常考汇总

底层与顶层const

  1. char const *p

const修饰的是*p,因此这是一个指向字符常量的指针,p指向的内存区域只读。底层const(修饰的是类型)

  1. char* const p

const修饰的是p,一个指向字符的常量指针,p内存区域只读,顶层const(修饰的对象,即变量本身)

  1. const char *p

修饰的是char,这是一个指向字符常量的指针,p指向的内存只读,底层const

  1. char **const p,

修饰的p,是一个字符的指针的指针常量,p本身只读,顶层const

  1. char* const *p

修饰的是*p,是一个指向字符的指针常量的指针,*p只读,底层const

加const构不构成重载

原博客
修饰参数:

如果是传值,不构成
如果是传指针,构成

修饰函数:

构成,影响是否能修改成员变量

const与static区别

const定义的叫常量, 它的编译方式是:编译过程中, 把出现常量名字的地方,用常量的值进行替换
区别:
面向过程 :
const

全局变量, 局部变量, 形参变量 ;
不能修饰函数

static:

全局变量,局部变量
可以修饰函数

面向对象:
const:

常成员变量,初始化必须写在构造函数初始化列表中
常成员方法:只能访问其他成员,不能修改。
常对象:普通对象和常对象都可以调用常方法,常对象只能调用常方法 ;

static:

static修饰全局变量使全局变量从 global符号变成 local 符号,因此只能当前文件可见,不参与链接过程;
static修饰普通成员变量,使普通成员变量从栈内存变成在.data或.bss 存储了,生命周期变长了.
修饰成员变量变成静态成员变量,必须在类外初始化,所有对象共享.
修饰成员方法变成静态方法不依赖于对象,通过类作用域访问,只能访问static成员变量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疏狂似风~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值