文章目录

  • 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相关推荐

  1. c++学习总结:extern声明全局变量

    2019独角兽企业重金招聘Python工程师标准>>> 在iOS开发中,我们可以自定义一个单例类,用于在整个应用程序中来使用,比较常见的就是[UIApplication shared ...

  2. 侯捷C++视频笔记——C++面向对象高级编程(下)

    C++面向对象高级编程(下) 01.简介 学习目标: 1.探讨上篇没有探讨过的问题 2.继续深入了解面向对象,包括虚指针,虚表,虚函数,以及多态 02.转换函数与explicit 1.转换函数 转换函 ...

  3. rtklib——PPP Learning

    目录 前置知识 卫星系统频点解读 一些C语言高级编程 static和const用法 Trace and debug malloc函数和realloc函数 函数指针(回调函数) 根据条件截取矩阵 单精度 ...

  4. C++ 【学习笔记】 - 基础(class、inline、explict、new、delete、static、this、mutable、friend、operator、virtual)

    上上一篇:java全家桶 上一篇:C语言 [学习笔记] - 基础.理论(原码/反码/补码).函数(字符串.定义).指针.内存(函数.结构).复合类型.函数(调用原理.指针.接口) 视频:https:/ ...

  5. C++ 学习笔记之(19) new、delete表达式、RTTI(运行时类型识别)、枚举、类成员指针、嵌套类、局部类、位域、volatile、extern C

    C++ 学习笔记之(19) new.delete表达式.RTTI(运行时类型识别).枚举.类成员指针.嵌套类.局部类.位域.volatile.extern C C++ 学习笔记之(19) new.de ...

  6. 对上一篇文章《extern与头文件(*.h)的区别和联系》的学习体会

    阅读了上一篇分享的文章,我个人认为,最重要的结论如下: 总结: 对变量而言,如果你想在本源文件(例如文件名A)中使用另一个源文件(例如文件名B)的变量,方法有2种:(1)在A文件中必须用extern声 ...

  7. [C++再学习系列] 变量的声明、定义与extern关键字

    变量的声明与定义: A definition of a variable allocates storage for thevariable and may also specify an initi ...

  8. visual C++学习杂谈1(extern、cosnt引用指针)

    extern的用法: .cpp 1 #include <iostream> using namespace std; extern int i; int main(int argc, ch ...

  9. C++ 学习之旅(10)——static与extern

    只要你看过我系列中之前关于编译和链接的内容,你就能看懂以下内容,直接上例子: Static.cpp int S_var = 5; main.cpp #include <iostream>i ...

最新文章

  1. Hyper-V vNext新的虚拟机配置文件、配置版本
  2. java二分查找法_java算法之二分查找法的实例详解
  3. 公子龙:我读研期间通过实习和比赛收入五十万
  4. 如何在搜狗浏览器中添加扩展工具
  5. java 读取raw文件_Android 读取assets和raw文件内容实例代码
  6. 详解Python科学计算扩展库numpy中的矩阵运算(1)
  7. python eval
  8. 利用firebug动态加载online js文件
  9. echarts-for-react的使用详解
  10. mysql 查询最顶级_2018顶级MySQL博客作者
  11. oracle dnfs 配置,配置 Oracle Direct NFS (dNFS)
  12. 不能注册DLL/OCX:RegSvr32失败 0x5
  13. c语言如何编辑数学公式,怎样用C语言编写数学公式
  14. go-项目配置govendor【详细教程】
  15. pikachu File Inclusion 文件包含漏洞 (皮卡丘漏洞平台通关系列)
  16. 焊缝标注vlx实用程序_机械制图焊缝标注方法!太全了,收藏了
  17. 中学计算机课外小组活动计划,小学数学课外活动计划
  18. RK61 蓝牙机械键盘配合 karabiner 软件适配 MAC 系统脚本
  19. 更换电脑机械硬盘之后,无需重新安装程序技巧(系统盘为固态),解决D盘程序快捷方式图标白色方块
  20. 关于颜色直方图中bins的理解

热门文章

  1. LeetCode MySQL 1440. 计算布尔表达式的值(case when then else end)
  2. LeetCode 788. 旋转数字
  3. LeetCode 1374. 生成每种字符都是奇数个的字符串
  4. LeetCode 32. 最长有效括号(栈DP)
  5. 安卓手机主题软件_类似主题软件下载-类似主题安卓官方版下载v2.6.6.3
  6. java中存在对多个对象加锁的情况_Java对象锁和类锁全面解析(多线程synchronized关键字)...
  7. python创建socket对象_python---一个简单的socket
  8. 论文浅尝 | 基于事理图谱的脚本事件预测
  9. 写给运营同学和初学者的SQL入门教程
  10. 随机/线性颜色生成器(RandomColorGenerator)