社区
进程/线程/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。
...全文
123
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写文章
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(向上强制转型):将会造成对象的内容被切割.
数据结构实战完全手册
不同于其他课程,本课程从单链表出发,手把手的全代码实现了栈与队列,树、图(包括
数组
和链表的两种形式),并对这些经典结构的应用也做了代码级的实现,覆盖了经典数据结构的全部内容. 课程参考教材:周幸妮教授的...
C++ 内存分配和回收 (
new
和delete)
“
new
”是C++的一个关键字,同时也是操作符。关于
new
的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与
new
有关的内容做一个总结。
new
的过程 当我们使用关键字
new
在堆上动态创建一个
对象
时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A: clas
【面试题】「2023」JavaScript 最新高频 前端面试题 指南 (必看)
一个拥有 length 属性和若干索引属性的
对象
就可以被称为类
数组
对象
。类
数组
对象
和
数组
类似,但是不能调用
数组
的方法。常见的类
数组
对象
有 arguments 和 DOM 方法的返回结果,还有一个函数也可以被看作是类
数组
对象
,因为它含有 length 属性值,代表可接收的参数个数。//(1)通过 call 调用
数组
的 slice 方法来实现转换//(2)通过 call 调用
数组
的 splice 方法来实现转换//(3)通过 apply 调用
数组
的 concat 方法来实现转换。
从零说起: 3.
数组
与集合
数组
一. 概念及使用 定义 一个变量只能存一个数据, 如果想要存储多个数据, 就需要通过
数组
来完成 同一个类型的数据集合,
数组
其实就是一个容器
数组
的特点: 要求必须存储同一种类型的数据 存储时必须要明确元素的个数 实质
数组
是java 容器中的一种
数组
其实就是存储了固定个数并且必须是同一类型的元素的容器 分类 一维
数组
二维
数组
多维
数组
一维
数组
声明的格式 格式一: 元素类型[]
数组
名 =
线性存储结构--
数组
(顺序表)、链表、栈、队列
线性存储结构:
数组
+链表+字符串+队列和栈 作者:写Bug的拉哥 https://www.bilibili.com/read/cv8480862?spm_id_from=333.999.0.0 出处:bilibili 1.
数组
1. 如何在java中如何定义
数组
//定义静态
数组
;指定数字的元素内容,但是不指定
数组
的长度 int[] a =
new
int[]{1,2,3,4,5}; //定义动...
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章