C++为什么不能把派生类数组的指针赋值给基类指针
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,本篇内容介绍了"C++为什么不能把派生类数组的指针赋值给基类指针"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2025年02月08日C++为什么不能把派生类数组的指针赋值给基类指针
本篇内容介绍了"C++为什么不能把派生类数组的指针赋值给基类指针"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
永远不要将派生类数组的指针赋值给基类指针
Reason(原因)
Subscripting the resulting base pointer will lead to invalid object access and probably to memory corruption.
作为赋值结果的基类指针的下标运算会引起无效的对象访问并可能发生内存破坏。
Example(示例)
struct B { int x; };
struct D : B { int y; };
void use(B*);
D a[] = {{1, 2}, {3, 4}, {5, 6}};
B* p = a; // bad: a decays to &a[0] which is converted to a B*
p[1].x = 7; // overwrite D[0].y
use(a); // bad: a decays to &a[0] which is converted to a B*
Enforcement(实施建议)
Flag all combinations of array decay and base to derived conversions.
提示所有数组退化和基类类型向派生类类型转换的情况。
Pass an array as a span rather than as a pointer, and don't let the array name suffer a derived-to-base conversion before getting into the span
使用span传递数组而不是指针,也不要再放入span之前让数组名经过一次派生类向基类类型的转换。
"C++为什么不能把派生类数组的指针赋值给基类指针"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
指针
数组
类型
C++
内容
情况
更多
知识
实用
学有所成
接下来
下标
内存
原因
困境
实际
对象
建议
文章
案例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库建设流程
方舟生存进化好友怎么找服务器
安徽个人软件开发
小程序云数据库添加数据
和虚拟机一样的服务器
工业云实时历史数据库厂家
白云网络数据库维护怎么样
服务器指定源组播测试
SQL数据库连接技术有哪些
笔记本电脑下的网络安全模式
数据库怎么让字段输出系统时间
如果根服务器瘫痪了会怎么样
程序员就是软件开发工程师吗
利用学校网站宣传网络安全
计算机软件开发的专业名称
剑网3npc数据库
深圳传音控股软件开发
服务器与工作站有哪些
微信扫码大数据库
个人期股软件开发
互联网科技股的未来
小学生 网络安全教育 课件
计算机网络技术毕业要求
apex国内玩什么服务器
乐园数据库异度之刃
河南高校党建软件开发系统
河南商家云网络技术有限公司
设计 硬件及软件开发
网络安全倡导文明上网
战地5真实伤害服务器