C++学习—— mutable和 extern
文章目录
- 1. mutable
- 2.extern用法?
1. mutable
1) 如果需要在const成员方法中修改一个成员变量的值,那么需要将这个成员变量修饰为mutable。即用mutable修饰的成员变量不受const成员方法的限制;
常成员函数,不允许修改成员变量的值,但是使用mutable修饰的成员变量,可以在常成员函数中进行修改。
#include<iostream>
using namespace std;class solution {public:void print1() const {a = 10;//不可以修改}void print2() const {b = 10;//可以进行修改}
private:int a = 0;mutable int b = 0;
};int main() {return 0;
}
2) 可以认为mutable的变量是类的辅助状态,但是只是起到类的一些方面表述的功能,修改他的内容我们可以认为对象的状态本身并没有改变的。实际上由于const_cast的存在,这个概念很多时候用处不是很到了。
2.extern用法?
1) extern修饰变量的声明
如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。
2) extern修饰函数的声明
如果文件a.c需要引用b.c中的函数,比如在b.c中原型是int fun(int mu),那么就可以在a.c中声明extern int fun(int mu),然后就能使用fun来做任何事情。就像变量的声明一样,extern int fun(int mu)可以放在a.c中任何地方,而不一定非要放在a.c的文件作用域的范围中。
3) extern修饰符可用于指示C或者C++函数的调用规范。
比如在C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用的函数。这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同。
C++学习—— mutable和 extern相关推荐
- c++学习总结:extern声明全局变量
2019独角兽企业重金招聘Python工程师标准>>> 在iOS开发中,我们可以自定义一个单例类,用于在整个应用程序中来使用,比较常见的就是[UIApplication shared ...
- 侯捷C++视频笔记——C++面向对象高级编程(下)
C++面向对象高级编程(下) 01.简介 学习目标: 1.探讨上篇没有探讨过的问题 2.继续深入了解面向对象,包括虚指针,虚表,虚函数,以及多态 02.转换函数与explicit 1.转换函数 转换函 ...
- rtklib——PPP Learning
目录 前置知识 卫星系统频点解读 一些C语言高级编程 static和const用法 Trace and debug malloc函数和realloc函数 函数指针(回调函数) 根据条件截取矩阵 单精度 ...
- C++ 【学习笔记】 - 基础(class、inline、explict、new、delete、static、this、mutable、friend、operator、virtual)
上上一篇:java全家桶 上一篇:C语言 [学习笔记] - 基础.理论(原码/反码/补码).函数(字符串.定义).指针.内存(函数.结构).复合类型.函数(调用原理.指针.接口) 视频:https:/ ...
- C++ 学习笔记之(19) new、delete表达式、RTTI(运行时类型识别)、枚举、类成员指针、嵌套类、局部类、位域、volatile、extern C
C++ 学习笔记之(19) new.delete表达式.RTTI(运行时类型识别).枚举.类成员指针.嵌套类.局部类.位域.volatile.extern C C++ 学习笔记之(19) new.de ...
- 对上一篇文章《extern与头文件(*.h)的区别和联系》的学习体会
阅读了上一篇分享的文章,我个人认为,最重要的结论如下: 总结: 对变量而言,如果你想在本源文件(例如文件名A)中使用另一个源文件(例如文件名B)的变量,方法有2种:(1)在A文件中必须用extern声 ...
- [C++再学习系列] 变量的声明、定义与extern关键字
变量的声明与定义: A definition of a variable allocates storage for thevariable and may also specify an initi ...
- visual C++学习杂谈1(extern、cosnt引用指针)
extern的用法: .cpp 1 #include <iostream> using namespace std; extern int i; int main(int argc, ch ...
- C++ 学习之旅(10)——static与extern
只要你看过我系列中之前关于编译和链接的内容,你就能看懂以下内容,直接上例子: Static.cpp int S_var = 5; main.cpp #include <iostream>i ...
最新文章
- Hyper-V vNext新的虚拟机配置文件、配置版本
- java二分查找法_java算法之二分查找法的实例详解
- 公子龙:我读研期间通过实习和比赛收入五十万
- 如何在搜狗浏览器中添加扩展工具
- java 读取raw文件_Android 读取assets和raw文件内容实例代码
- 详解Python科学计算扩展库numpy中的矩阵运算(1)
- python eval
- 利用firebug动态加载online js文件
- echarts-for-react的使用详解
- mysql 查询最顶级_2018顶级MySQL博客作者
- oracle dnfs 配置,配置 Oracle Direct NFS (dNFS)
- 不能注册DLL/OCX:RegSvr32失败 0x5
- c语言如何编辑数学公式,怎样用C语言编写数学公式
- go-项目配置govendor【详细教程】
- pikachu File Inclusion 文件包含漏洞 (皮卡丘漏洞平台通关系列)
- 焊缝标注vlx实用程序_机械制图焊缝标注方法!太全了,收藏了
- 中学计算机课外小组活动计划,小学数学课外活动计划
- RK61 蓝牙机械键盘配合 karabiner 软件适配 MAC 系统脚本
- 更换电脑机械硬盘之后,无需重新安装程序技巧(系统盘为固态),解决D盘程序快捷方式图标白色方块
- 关于颜色直方图中bins的理解
热门文章
- LeetCode MySQL 1440. 计算布尔表达式的值(case when then else end)
- LeetCode 788. 旋转数字
- LeetCode 1374. 生成每种字符都是奇数个的字符串
- LeetCode 32. 最长有效括号(栈DP)
- 安卓手机主题软件_类似主题软件下载-类似主题安卓官方版下载v2.6.6.3
- java中存在对多个对象加锁的情况_Java对象锁和类锁全面解析(多线程synchronized关键字)...
- python创建socket对象_python---一个简单的socket
- 论文浅尝 | 基于事理图谱的脚本事件预测
- 写给运营同学和初学者的SQL入门教程
- 随机/线性颜色生成器(RandomColorGenerator)