社区
进程/线程/DLL
帖子详情
new对象数组失败,100分相送
zkszks
2004-11-22 09:49:04
struct A
{
virtual ~A(){}
virtual void Init(void)
{
//
}
};
struct B: public A
{
int i;
void Init(void)
{
//
}
};
若“A *pA = new B[10];”时,“&pA[1]”是无效的。
如B中无成员变量,则OK。
...全文
131
12
打赏
收藏
new对象数组失败,100分相送
struct A { virtual ~A(){} virtual void Init(void) { // } }; struct B: public A { int i; void Init(void) { // } }; 若“A *pA = new B[10];”时,“&pA[1]”是无效的。 如B中无成员变量,则OK。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oyljerry
2004-11-22
打赏
举报
回复
多态是将父类的指针可以访问子类的成员,而楼主用子类来访问父类
oyljerry
2004-11-22
打赏
举报
回复
强制类型转换了
nlstone
2004-11-22
打赏
举报
回复
这样的做法是错误的...
A[1]会访问到一个错误的地址,因为编译器只会老实地以A++这种方式来访问下一个A
alphakiller
2004-11-22
打赏
举报
回复
你这样写再试试
A *pA;
B b = new B[10];
pA=(A*)(&b);
快乐鹦鹉
2004-11-22
打赏
举报
回复
你这个方法没有什么问题。使用时强制转换成B指针进行使用就没有问题了。
handwolf
2004-11-22
打赏
举报
回复
当然了,继承类有成员的话,大小肯定比父类大!
但是[]运算符是按照父类的大小来进行的!
楼主明白了没?
danyueer
2004-11-22
打赏
举报
回复
你的声明看起来没有错误,不过“&pA[1]”似乎是一个指向指针的指针,取这个对象该用 *pA[1] 吧?
zkszks
2004-11-22
打赏
举报
回复
主要是为了使用多态,有不有更好的?
快乐鹦鹉
2004-11-22
打赏
举报
回复
如果是无效指针那就有问题了,也不应该啊。
如果看不到i的值,那是肯定的。因为你看的是A对象,而不是B对象。强制转换为B就看到了。
快乐鹦鹉
2004-11-22
打赏
举报
回复
无效是指指针为无效指针,还是看不到i的值呢?
快乐鹦鹉
2004-11-22
打赏
举报
回复
“&pA[1]”是无效的。==》什么意思?你的“无效”指什么?
alphakiller
2004-11-22
打赏
举报
回复
刚刚在看深入浅出MFC,看看是不是这个问题:
你知道,衍生对象通常都比基础对象大(我是指内存空间),因为衍生对象不但继承其基础类别的成员,又有自己的成员。那么所谓的upcasting(向上强制转型):将会造成对象的内容被切割.
【面试题】「2023」JavaScript 最新高频 前端面试题 指南 (必看)
一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象。类数组对象和数组类似,但是不能调用数组的方法。常见的类数组对象有 arguments 和 DOM 方法的返回结果,还有一个函数也可以被看作是类数组对象,...
(JavaScript权威指南 第七章 数组
JavaScript权威指南 第七章 数组第七章 数组7.1 创建数组7.1.1 数组字面量7.1.2 扩展操作符7.1.3 Array() 构造函数7.1.4 Array.of()7.1.5 Array.from()7.2 读写数组元素7.3 稀疏数组7.4 数组长度 第七章 数组 数组是...
线性存储结构--数组(顺序表)、链表、栈、队列
线性存储结构:数组+链表+字符串+队列和栈 作者:写Bug的拉哥 https://www.bilibili.com/read/cv8480862?spm_id_from=333.999.0.0 出处:bilibili 1.数组 1. 如何在java中如何定义数组 //定义静态数组;指定数字的...
从零说起: 3.数组与集合
同一个类型的数据集合, 数组其实就是一个容器 数组的特点: 要求必须存储同一种类型的数据 存储时必须要明确元素的个数 实质 数组 是java 容器中的一种 数组其实就是存储了固定个数并且必须是...
JavaScript详细笔记2
概念:数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。 创建: 利用
new
创建数组 利用数组字面量创建数组 // 1. 数组(Array) // 2. 利用
new
创建数据 var arr=
new
Array()...
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章