我是靠谱客的博主 现代泥猴桃,最近开发中收集的这篇文章主要介绍指针漂移C语言,有关C++指针漂移问题的解决方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

虽然说C++编程语言功能真的是非常的强大,但是总会出现一些大大小小的错误。不知道大家在进行C++编程的时候,是否会产生指针漂移的问题呢?那么大家有没有想过这个问题的产生来源呢?其实总的来说,这主要就是和C++对象模型有一定的关系。今天小编会在这篇教程中详细的为大家分析一下,问题的产生原因以及处理的方法。下面我们就一起来学习一下:有关C++指针漂移问题的解决方法。

dfafb8230f4a75676e8e0e83382a1430.png

一、问题产生

小编在第一次遇见这个问题的时候,一直在疑惑这到底是怎样的原因会产生这样的问题?在那段时间,小编真的百分不得其解啊。最后的最后,小编终于确定了产生的原因就是:由于多继承所引发的C++指针漂移,这是和C++对象模型有一定关系的。大家可以看一下示意的代码,具体的代码如下图:

02237559c0996a064e7e1c40ebf0cd61.png

那么在这个时候,相信大家都会发现一个问题,那就是:pb以及pa这两个值是完全不一样的!在它们两者中,有一个和pab是相等的。然而,另外一个则是产生了偏移。假如说我们将AB的声明中B以及A的顺序调换一下,那么会产生怎样的现象呢?没错,就是会产生偏移的指针也会变化成为另外一个。

二、使用void指针

接下来小编会使用void指针愚弄一下编译器,有人就会问这是为什么呢?就是为了可以确定一下,这就是编译器做了转换的原因。具体的代码,如下图:

6fc5ff20f901e66c80d38b5479dfd546.png

此时,大家又会发现pa的值已经是和pab相等了。但是,却指向了一个错误的地方。从pab到pa的转换,在这个转换过程中,完全就是依赖于路径的选择。这就是总让人不是很放心的原因所在。现在我们还不知道将指针放入容器以后再把它取出来,会不会出现错误的情况。当然啦,小编在上面的程序中就已经使用了强制类型转换。其实一般来说,我们在一个良好的程序中是应该避免这个情况出现的。假如说仅仅只有一个隐式转换的话,那么就可以得到一个正确的结果了。具体的代码如下图:

5c55a9e22df175fe0c75d5cbd0adf736.png

三、程序代码

大家可以看一下,下面的程序。这个程序就是利用了Cygwin/g++b来进行编译通过的。具体的代码,如下图:

d6b0efa96ca1b6d8a8f697bb7e8aea0a.png

看完以上的程序代码,大家知道最终的运行结果是什么了吗?如果还不知道的话,可以看下面的正确答案哟!如下图:

31d9faf37019a684c1fc12ac4b434234.png

小编结语:

今天小编主要为大家简单介绍一下在有关C++指针漂移问题的解决方法。通过这篇教程,相信大家在今后的日子中遇到这样的问题,都知道怎样解决了吧。希望这会对大家有所帮助。本篇编程语言教程来源于:课课家教育。

最后

以上就是现代泥猴桃为你收集整理的指针漂移C语言,有关C++指针漂移问题的解决方法的全部内容,希望文章能够帮你解决指针漂移C语言,有关C++指针漂移问题的解决方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部