对象和函数都带const修饰符即是常对象与常函数
定义常对象
const Class class;
定义常函数
void fun() const{
}
使用了常对象后对象里的任何值都不可以改变
- 常对象只能调用常成员函数,不能调用普通成员函数 (除了隐式调用析构函数和构造函数),常成员函数是常对象的唯一对外接口;
- 现在编译系统只检查函数的声明,只要发现调用了常对象的成员函数,而且该函数未被声明为const,编译阶段就报错;
- 常对象在被定义时需要被初始化;
文章作者: Jamie793
文章链接: https://blog.jamiexu.cn/2021/07/07/c%E5%B8%B8%E5%AF%B9%E8%B1%A1%E5%92%8C%E5%B8%B8%E5%87%BD%E6%95%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Jamie793’ S Blog!
相关推荐
2021-07-07
C++中的cin
c++中cin的作用是获用户键盘输入的字符 用法如下 using namespace std; char[] ch; cin >> ch; cout << ch; 首先是使用std命名空间然后创建一个char类型数组把输入的字符存入到数组里然后输出 cin还提供了两个get方法 第一个是cin.get() 第二个是cin.get(char) 这两个方法有啥区别呢? 第一个方法是获取一行的字符 另一个作用:可以让窗口一直保持不关闭 用法如下 using namespace std; char[] ch; ch = cin.get(); cout << ch; 一样使用std命名空间因为cin是在std命名空间的 使用cin或者cout都得导入iostream头文件 否则将会报错因为要用到流操作所以必须导入 另外还有一个cin.getline(chars,int)方法 这个函数看函数名就知道大概的意思了就是获取一行的字符存入chars数组中至于int呢就是他要写入的长度 比如我输入了一行文字长度总长度为10 然后我调用方法 cin.getline(...
2021-07-07
C++数组和指针
int a[10]; 那么这个时候a就是这个数组首元素的地址 *+地址是取量,取地址中的量 &+变量 是取变量地址 然后定义变量的时候 int *a;这个时候a就是指针变量 指针变量只能用来存地址 指针变量本身也是有地址的 数组名本身就是数组首元素的地址 *(arp[2])获取数组第三个元素的数组值 指针数组只能存指针,就像是char不能存int一样 int a[10];表明了长度为10的int数组 数组的特点是可以把类型一样的数据放在一起不用频繁创建变量就比如一百个一样的变量只需要循环创建存入数组里而不用一个个复制粘贴修改大大减少了时间 数组的作用其实就是为了简化大量声明! 那数组的实质就是申请一个很大的内存,然后分给每一个元素 数组有这样一个特点 int a ,b;如果说a的地址是0000,b的地址是0004,这时候我们再声明一个int c;他的地址一定是0008吗,不一定的 内存又不是你一个应用在申请,你怎么知道别的应用没申请走 可能0008就被别人拿走了,c就是0012 但是数组是一下子把0-400全部拿下来了 然后一个int是四个字节,刚好就分配给100个元素...
2021-07-07
C++类
我先讲一下new吧 我们的类其实说白了就是结构体的变种 结构体其实就是一种数据类型 我们的每一种数据都是需要内存分配的所以说类也是一种数据类型 嗯嗯 比如说有个class a; class a{}; 我们要引用这个类 我们一般定义数据是怎么定义 int num; 那么类其实也一样 类本身就是一种数据类型 所以我们可以用 类名+变量名的形式去声明 class a{}; a bianliang; new其实就是一种申请内存的方式 他会开辟一个新的内存空间 然后返回开辟的这个地址 我们就可以把东西放进去了 这时候我们的new会根据我们声明的类型开辟 类型大小的内存返回地址 然后在这个地址把类a放进去 最后赋值到bianliang上 class a{}; a bianliang; bianliang= new a(); 那么实际上我们这里的bianliang就是一个地址 我们在结构体里我们指向地址是什么操作 ->对吧a->name 函数是有类型的 执行函数的时候就要申请内存了 void占用4字节 void是空类型 不能返回的,能返回是因为这时候虽然为空类型 实际上分配了4个字...
2021-07-07
【C++】学习笔记——基本的输入输出
easyRSA 打开发现有多个N 判断是否是使用了公有的素数,尝试使用欧几里得辗转相除分解出公有的素数 确实是使用了公有的素数,直接用n整除common(共同素数)得到另一个素数。 根据公式phi = (q -1)*(p - 1),求出phi 使用gmpy2求出模逆元d 最后循环解密即可 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677# from flag import flagimport gmpy2from Crypto.Util.number import *import binascii # m = bytes_to_long(flag)e = 65537 def gcd(a, b): # 求最大公约数 if a < b: a, b = b, a while b != 0:...
2022-06-08
【CTF&Re&WriteUp】第二届广东大学生网络安全攻防大赛ReWP
LUOJIABASUO 半个月前参加了一场比赛,我主要是负责的Re但是只解出了一个比较简单的那就是Pyre其他的我打开来看了一下就关了甚至没调试。后来发现还是挺简单的一个题目 RE反调试 首先老规矩IDA打开静态分析看看,发现压根无法分析。主要是这里使用了虚表调用。虚表调用的子程序(函数)是在每次运行的时候才计算出来子程序的地址。这导致IDA分析的时候是无法对齐静态的分析的。所以 按照老规矩动态调试挂起来,发现IDA没有控制权无法控制程序当程序运行起来的 时候没有响应切不能在IDA结束远程的调试目标。那说明存在反调试。 如何寻找反调试的地方在哪呢?也挺简单的只要在入口处下个断点不断的运行程序看看哪里IDA没有控制权了那么说明该地方具有反调试 要注意的 是main函数不是最开始的入口,”__scrt_common_main_seh“ 这个子程序才是最开始执行的 引用来自https://www.dazhuanlan.com/relic256/topics/1212274 虽然 VS 系列入口函数均为mainCRTStartup,但不同版本的实现仍...
2021-07-07
【C++】学习笔记——const关键字
一、const的作用在Java当中我们有final关键字用来定义一个常量,常量即固定了的变量定义之后是无法修改的即只读方式访问。在C++中也有这么一个关键字const。const可以修饰的不仅仅是函数,变量,成员参数等还能用于指针。使用的方法也很简单定义一个const常量有两种格式type const varname;const type varne;这两种格式区别就是关键字的位置不一样比如下面代码 12const int ming = 0;int const ming2 = 1; 这两个方法定义的常量都是无法进行修改了的 二、const 和指针const可以和指针一起使用如下所示: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576#include <iostream>#include <string>namespace...
评论
公告
Welcome to my blog. The harder you work, the more luck you have.

