C++ 学习笔记(二) const的加强
const 含义为只读。如果在程序中显式改变const变量那么编译会报错。
C语言的const:
在C语言中const 变量是放在内存中,如果使用指针可以间接改变const变量。所以在C语言中const变量是并非不可修改,演示如下:

从图片实例中看出,通过指针指向const变量是可以修改所在内存的值。
C++中的const:
在C++中const变量不存放在内存中,而是存放在一个叫做“符号表”的东西里面(由编译器处理,里面的原理我也还没搞清楚,能用就好)。
比如:
const int a=10;//定义一个const 变量
那么在符号表里 符号a 就对应了数值 10。使用指针并不能改变a的值,实例:

在例程中可以看出const修饰的a变量是不能被指针修改的,但是指针所指向的内存也确实被修改了。
在C++中const修饰类的成员函数:
class test
{
public:
void const test();
void test1 ()const;
}
在函数前后加const 作用是一样的,那么这个const是修饰什么?放在这些位置是为什么?
1.类的成员函数都有一个隐藏的this指针,这const修饰的就是这个this指针 : void test ( test const *this);
有这个const 说明这个成员函数内不会修改私有成员。(this指针所指的内容不可修改)
2.由于this指针是被隐藏的,那么这const好像也是没什么地方好放了。。。。佩服做编译器的大牛们的想法。没得放就随便放啦。
C++ 学习笔记(二) const的加强的更多相关文章
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- muduo学习笔记(二)Reactor关键结构
目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...
- 转)delphi chrome cef3 控件学习笔记 (二)
(转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
随机推荐
- 外网连接Mysql云数据库
购买好Mysql云数据库,这里是腾讯云 在管理中把外网地址开通,然后可以看到本云数据库的外网地址 注意:外网地址com到前面才是连接地址,冒号后面的10057是连接的端口号,可以看下面的连接语句 cm ...
- CodeForces - 608A-Saitama Destroys Hotel(模拟)
Saitama accidentally destroyed a hotel again. To repay the hotel company, Genos has volunteered to o ...
- 2017"百度之星"程序设计大赛 - 初赛(A)小C的倍数问题
Problem Description 根据小学数学的知识,我们知道一个正整数x是3的倍数的条件是x每一位加起来的和是3的倍数.反之,如果一个数每一位加起来是3的倍数,则这个数肯定是3的倍数. 现在给 ...
- scut 125. 笔芯回文
https://scut.online/p/125 看数据量,这题可能是O(n^2)的dp 也可能是区间dp,但是区间dp一般复杂度是O(n^3),虽然也可以优化,但是比赛的时候那么多人“秒”了,应该 ...
- 《springcloud 二》SrpingCloud Zuul 微服务网关搭建
网关作用 网关的作用,可以实现负载均衡.路由转发.日志.权限控制.监控等. 网关与过滤器区别 网关是拦截所有服务器请求进行控制 过滤器拦截某单个服务器请求进行控制 Nginx与Zuul的区别 Ngin ...
- Spring Task ABC
配置说明 <task:annotation-driven scheduler="xxxScheduler" /> <task:scheduler id=" ...
- Java中的switch语句——通过示例学习Java编程(8)
作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=19 当我们在代码逻辑中有多个选项,而且需要为每个选 ...
- Redis key 键
1.set key value //设置.修改值 2.get key //如果key不存在,返回nil,表示空. 3.type key //返回key对应的value的数据类型 4.ren ...
- javascript组件封装中一段通用代码解读
有图有真相,先上图. 相信很多想去研究源码的小伙伴一定被这段代码给吓着了把,直接就打消了往下看下去的想法.我刚开始看的时候也是有点一头雾水,这是什么东东这么长,但是慢慢分析你就会发现其中的奥秘,且听我 ...
- SQL数据库基础二