- 博客(7)
- 收藏
- 关注
原创 c++机制坑之多态
首先多态的实现是依赖虚表的,b首先继承了a的虚表,因此在一开始(在B的test实现之前),b中的虚表已经有了A::test(int),但由于b类重写了a的test函数,虚表中的test函数被替换为b自己实现的test,但是!,此时替换时可能把A的test函数的“壳”和B的test函数的代码实现结合在一起了,这是个人猜测,因为只有这样似乎才能解释得通,如果有正确理解请予以指正。a->test()为什么出现这种结果,以下为个人猜测想法。为什么出现这种情况?
2024-07-25 20:32:36
176
原创 c++中的隐式转换
在主函数我们通过直接赋值的方式初始化了三个对象,但是按理说cat1,cat2,cat3是cat类型,而初始化的值依次是string,int,double类型,为什么能够成功赋值呢,这就是c++11的隐式转换规则——当存在参数仅有一个的构造函数时,允许直接将值赋值给对象完成初始化。同时,隐式转换有很多有意思的现象,即在隐式转换的过程中,总是调用构造函数(而不是视为一次赋值),并且当对一个对象进行多次隐式转换,仅有最后一次隐式转换生效。通过以下例子说明隐式转换的含义,首先创建一个类cat。
2023-12-29 16:51:18
413
1
原创 计算字符串中最大连续相同的字符个数
3.如果当前连续字符大于max,将max的值改为count,一旦出现前后字符不相同,将count置为1然后继续循环,当循环到后一个字符是\0时代表字符串已经结束,返回max。2.需要一个max记录出现过的最大的连续相同字符个数,还需要一个count记录当前连续字符已经出现了几个。ok,理清思路,咔,很快啊,代码就写出来了。1.只要字符串有值,连续相同最少也是一个。怎么做呢,先理一下思路。大功告成,继续学习!
2023-07-03 22:05:33
1078
1
原创 把数据的存储从小端字节序转化为大端字节序
关键点在于将val的地址强制转换为(char*) 会拿到val数据的第一个字节的数据,然后每次将char*类型的p++,都会使p的地址向前一个字节,依次拿到高位地址的高位数据,每次都将p指向的一个字节的数据依次从buf的高地址处开始存储(p最早指向最低位数据,存放在buf的最高位地址),存放完毕,退出循环即可实现!我们知道做这道题只需要把float四个字节的数据从低地址开始一个一个地拿出来,存放在一个地方,然后再从存放float数据的高地址处把刚才保存的数据依次放回去就可以了,那么代码怎么写呢。
2023-07-03 18:48:20
731
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人