社区
新手乐园
帖子详情
父类的引用指向子类的对象, 调用虚函数为什么执行的是父类的
zzjweb
2016-07-28 12:37:07
我有一个A类, B:public A
A有virtual void fun(),
B有virtual void fun(),
用一个vector<A>存放一些A和一些B, 循环遍历调用fun(), 如何才能在当里面某元素是B类的时候执行B类的方法?
...全文
204
4
打赏
收藏
父类的引用指向子类的对象, 调用虚函数为什么执行的是父类的
我有一个A类, B:public A A有virtual void fun(), B有virtual void fun(), 用一个vector存放一些A和一些B, 循环遍历调用fun(), 如何才能在当里面某元素是B类的时候执行B类的方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
paschen
2016-07-28
打赏
举报
回复
你vector中的对象存的也不是引用,而是已经被切片后的对象了,当然不会调用子类虚函数 如果需要使用多态,在vector中应该存指针而不是对象
paschen
2016-07-28
打赏
举报
回复
你vector中的对象存的也不是引用,而是已经被切片后的对象了,当然不会调用子类虚函数 如果需要使用多态,在vector中应该存指针而不是对象
flying_music
2016-07-28
打赏
举报
回复
用指针吧,定义一个vector<A*> vec;然后把A或B对象的指针放进去,再用vec[i]->fun()调用就可以了
slmax1
2016-07-28
打赏
举报
回复
A *a = new B a->fun() 调用B类的方法 B *b = new B b->fun() 同上 这个好像是观察者模式?
微服务系列第七季-Java面向
对象
中的继承
微服务应用是分布式开发的主要手段,它很好的解决了高并发等电商平台的问题。微服务系列课程是以Java语言为基础,以SpringCloud+SpringBoot为核心,结合Spring、SpringMVC及MyBatis,通过游戏案例、电商案例,以极简的方式,带领入门的朋友们快速上手微服务开发。全部案例源码分享给学习的朋友,案例采用敏捷开发管理模式,让朋友们在每一个阶段,有着游戏过关一样的学习体验。 第七季主要是给大家介绍一下Java面向
对象
中的继承,包括:继承的概念、为什么要继承、继承的类型及特性、extends关键字、final关键字、implements关键字、super和this关键字、
子类
中如何
调用
父类
中的有参、无参构造方法。
c++,
父类
引用
指向
子类
对象
,
虚函数
c++有
父类
引用
指向
子类
对象
(面向
对象
的重要特点之一,java里是这样的!) #include class Father { public: Father() { f = 1; } void print() { cout<<"f = "<
cpp中,
父类
指针
指向
子类
对象
的底层原理
当
对象
的
虚函数
被
调用
时,程序会根据
虚函数
表中存储的
虚函数
地址来
调用
正确的函数实现。当
子类
继承
父类
时,
子类
会继承
父类
的
虚函数
表,同时也可能会新增自己的
虚函数
,这些新增的
虚函数
会在
子类
的
虚函数
表中添加新的
虚函数
地址。当
父类
指针
指向
子类
对象
时,程序会根据
对象
的
虚函数
表来
调用
相应的
虚函数
实现,无论这些
虚函数
是从
父类
继承而来还是在
子类
中新增的。因此,
父类
指针
指向
子类
对象
的底层原理就是通过指针所
指向
的
对象
的
虚函数
表来实现动态绑定,使得程序在运行时能够根据
对象
的实际类型来
调用
相应的
虚函数
。
父类
对象
指针
调用
子类
函数
当
父类
中声明某个函数为
虚函数
,并且
子类
得载了这个
虚函数
以后,用
父类
对象
的指针可以
调用
子类
的相应函数,但前提是该指针
指向
的
对象
是
子类
的
对象
,否则没有意义。 1.新建一个
子类
对象
时,它首先
执行
它
父类
的构造方法然后再
执行
子类
的构造方法。 2.我们new一个
子类
对象
赋给
父类
(
父类
的
引用
指向
了
子类
的
对象
,也就是说java里说的多态,),
父类
对象
不可以
调用
子类
的方法,但如果
子类
重写了
父类
的某个方法,则此时...
【C++学习笔记】
父类
指针
指向
子类
对象
虚函数
的作用主要是实现了多态的机制。简而言之就是用
父类
型的指针
指向
其
子类
的实例,然后通过
父类
的指针
调用
实际
子类
的成员函数。但仅仅可
调用
父类
含有的函数,非
父类
函数不能
调用
。 普通
虚函数
调用
假设我们有下面的类层次: #include <iostream> using namespace std; class A { public: A(){}; ~...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章