我现在有几个类,Layer,Feature,Layer类有addFeature函数,存到private成员一个vector中,还有类Point,Line,Area均继承自Feature,但当一个Point对象调用addFeature()函数时,无法添加Point的成员,只能添加继承自Feature的成员;
我觉得应该是addFeature函数没有为子类开辟出存储空间,所以无法存放子类对象,请问如何解决,才能让addFeature函数根据类型来动态分配存储空间呢?
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已采纳
c++继承问题,如何在调用基类函数时根据子类而动态分配存储空间?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
滴水冰冻 2014-02-19 02:14关注分配什么空间?
你的Point ,line,Area三个类是不是都继承Feature
可以把Feature的成员定义成虚成员virtue
在子类中都在定义一下该成员就可以了。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2022-08-06 00:46回答 3 已采纳 虚函数靠后,非虚函数优先
- 2022-10-27 02:45回答 1 已采纳 实测,只带一个参数就会报错再加一个参数就不报错了,为什么我也不知道
- 2022-04-04 13:00回答 1 已采纳 Sphere继承Circle,同时也会继承Circle成员x,y,radius,当调用Sphere::setR()时,实际上是将参数赋值给父类Circle中的变量radius而不是Sphere的变量r
- 2021-07-24 06:30楚台风庾楼月宛如昨的博客 测试环境: Qt5.12 新建立一个子类,BaseClass 有函数 baseAction1 ...如此, 当你有多个基类的时候, Derived1Class Derived2Class … 都可以通过调用 baseAction1 而调用对就不同子类的baseAction2函数 ...
- 2021-12-16 07:22回答 3 已采纳 看一下汇编就清楚,当把一个函数设为虚函数,这个函数的地址就会在这个类的虚函数表上,当你通过父类的指针或引用指向一个子类的实例,通过这个指针调用这个类的一个虚函数时其实是调用了子类的函数,而不是父类的,
- 2022-02-24 09:40回答 3 已采纳 用指向子类的基类指针调用子类的函数,只能是虚函数。如果你要调用子类的非虚函数,必须先将基类指针转换为子类的指针,然后再调用。
- 2023-04-12 02:04回答 1 已采纳 B()创建了一个临时对象,然后通过A a = 进行了隐式类型转换所以说这里其实创建了2个对象之所以构造函数少一次,是因为你拷贝构造函数没有写 #include <iostream> usi
- 2021-08-23 06:05再来一炖的博客 当基类和子类都有构造函数时,如果定义了一个子类对象,那么首先要调用基类的构造函数,然后再调用子类的构造函数;析构函数的调用次序与此相反,即先调用子类的析构函数,再调用基类的构造函数。 向基类的构造函数...
- 2015-06-04 23:35回答 8 已采纳 1. 1. 析构函数跟普通成员没有什么不同,只是编译器在会在特定的时候自动调用析构函数(离开作用域或者执行delete操作); 1. 2. 对于一个成员函数调用(不论是通过对象obj.func还是通
- 2022-06-21 03:06回答 2 已采纳 提示很明确,我只是没看懂你这个这已经在class类中了,你为什么前面还要带一堆的类名加:: 这里子类想重新实现基类的函数???
- 2013-11-27 19:22回答 2 已采纳 产生这个概念不好。 一个是分配内存,一个是初始化。 好比造一个肉夹膜要用肉。 你说造肉夹膜时是不是得先有肉? 但你那个C类相当于肉没熟就直接夹了, 夹完了才去炖肉, 这肉夹膜吃了肯定不舒服。
- 2020-08-13 03:29郭老二的博客 如果在基类中虚函数是public,子类中重载时标记为protected或者private函数,是否还能访问这个函数? 答案是: 基类指针指向子类时,可以访问,并且访问的是子类重载后的函数; 子类指针肯定不能访问,直接受...
- 2020-08-29 07:48在C++编程语言中,继承和动态内存分配是两个核心概念,它们分别涉及到面向对象设计和内存管理。继承允许一个类(派生类)从另一个类(基类)获取特性,从而实现代码重用和类层次结构的构建。动态内存分配则是在运行...
- 2020-08-22 09:43gyc0830的博客 第一种情况,当基类和子类中声明的是同名非虚函数时.调用关系如下 #include <iostream> using namespace std; #include <bits/stdc++.h> class AAA { public: void test1() { printf("This is AAA...
- 2020-08-05 22:26hankern的博客 A为基类,B为子类 class A{ virtual void test(){ cout<<"A"; } }; class B:public A{ virtual void test(){ cout<<"B"; } }; ...在B的函数中调用A::test(); ...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司