const 到底是什么 一. 开篇问题

const 可以说是个从C++开始就存在的一个入门话题, 但是对它的理解, 却是体现着对C++知识的深度.

 

贫道不敢以高手自居, 不过有点自己的心得. 结合一点经验, 和大家说一说, 抛砖引玉吧.

 

插入一个小故事, 当初毕业求职时, 到处投简历, 想着自己几年作实习生的经历, 还是很自负的, 不过头一回接到招聘hr电话时, 问了我个问题, C++中有几种类型转化. 之前一直是基本功还不扎实, 被问得蒙了. 只说了个static_cast, const_cast, 电话里听着招聘MM的冷笑, 羞愧难当.

好了, 这个问题给我们的读者, 如果您现在只能说出四种, 那您还有更大的发展空间. 那么const_cast起什么作用? 相信学过C++的朋友都会毫不费力地指出, 这是把一个const的指针或者引用, 转化成非const的指针或引用类型. 那么拔起萝卜带出泥, const又是个什么意思呢?

 

别小看最基本的定义, 因为任何复杂的问题, 归根结蒂都是基本定义和概念的复杂变化而已. 任何一个复杂的问题, 只要你有扎实的基本功, 和透过现象看本质的分析能力, 都会归结于基本的定义与概念.

 

回到我们const的正题. 简单地说, const就是只可读取值, 但是不能修改的一种修饰符.看MSDN上对const关键字的定义:When modifying a data declaration, the const keyword specifies that the object or variable is not modifiable. 还有它的评论:When following a member function's parameter list, the const keyword specifies that the function does not modify the object for which it is invoked. 那它是怎么体现出这个功能的? 都在内存中, 哪个变量是const, 哪个不是, 如何区分呢? 这个问题大家能答上来吗?

变量被声明为const, 那么指针被声明为const又是什么意思呢? 函数被声明为const又是什么意思? 为什么全局的变量可以声明为const, 而全局的函数可不可以被声明为const?

一个成员变量被声明为const, 该怎么初始化呢? 是内嵌数据类型怎么办? 是数组怎么办? 先剧透一下, const的数组是不能用初始化列表来赋初值的, 那该有什么变通的办法?

每个问题之后, 再带个"为什么", 如果读者您都能一一道来, 好, 您是真高手, 我有说的不妥当的地方还请您多多指教. 欢迎来访. 如果不能, 呵呵, 且听贫道给您呼悠一下吧.

 

动手之前, 顺便说一下知识结构的问题. 其实, 以上问题, 只要用心百度或者google一下, 都可以搜到答案的, 但是要找到一个把这些东西串在一起解释清楚的, 就少之又少了. 这下大伙儿就要死记硬背一大堆的"知识点", 然后在工作中, 遇到这个情况, 好, 你的知识点就用到了. 如果一年没碰着这情况, 那你可能就在一年内把你的知识点忘得七七八八, 支离破碎了. 这是件很不幸的事, 因为你没有了解为什么, 就是说搭建成功你自己的知识结构和体系.

就好比如现代物理学, 据说最厉害的就是麦克斯韦四方程, 搞明白这四个基本的数学方程之后, 差不多什么物理现象都可以解释得很清楚, 可以推导出来. 物理学之复杂, 所涉知识点之众多, 真不是三五十本书所能涵盖得了. 那么, 与其东一榔头西一棒子地记知识点, 还不如实实在在认认真真地搭建好你的知识体系吧. 搞明白底层的为什么之后, 再看所有的C++现象时, 都只是顺水推舟, 理所当然的事. 我想, 这就是开发语言中的道吧. C++作为高级开发语言, 只是高度地贴合这个"道".

 

在下面的篇幅中, 我们一起来研究这个"道"吧.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值