社区
C++ 语言
帖子详情
请知道虚函数的实现原理?
jxnczyp
2007-10-29 11:16:56
请知道虚函数的实现原理?
class A
{
public:
virtual void print()
{
cout<<"A Print"<<endl;
}
};
class B:public A
{
public:
virtual void print()
{
cout<<"B print"<<endl;
}
};
A *pa=new B;
pa->print();
他打印B print
这是怎么实现的呢??
...全文
110
1
打赏
收藏
请知道虚函数的实现原理?
请知道虚函数的实现原理? class A { public: virtual void print() { cout<<"A Print"<<endl; } }; class B:public A { public: virtual void print() { cout<<"B print"<print(); 他打印B print 这是怎么实现的呢??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
独孤过儿
2007-10-29
打赏
举报
回复
这个问题还真不是一句话两句话能说得清楚的,看这里吧
http://blog.csdn.net/cxyol/archive/2006/03/12/622319.aspx
虚函数
的
实现原理
虚函数
的
实现原理
:
虚函数
的用法:可以让派生类重写基类的成员函数实现多态。
虚函数
实现多态的机制,严格来说是动态多态,是在出现运行的时候实现的。
虚函数
的
实现原理
:每个
虚函数
都会有一个与之对应的
虚函数
表,该
虚函数
表的实质是一个指针数组,存放的是每一个对象的
虚函数
入口地址。对于一个派生类来说,他会继承基类的
虚函数
表同时增加自己的
虚函数
入口地址,如果派生类重写了基类的
虚函数
的话,那么继承过来的虚函...
虚函数
实现原理
简单地说,每一个含有
虚函数
(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的
虚函数
表,其中存放着该类所有的
虚函数
对应的函数指针。例:
虚函数
(
实现原理
、内存位置、初始化时间)
一、
实现原理
参考详细 :
虚函数
实现原理
C++的标准规格说明书中说到,编译器必需要保证
虚函数
表的指针存在于对象实例中最前面的位置(这是为了保证正确取到
虚函数
的偏移量) 1)
虚函数
按照其声明顺序放于表中。 2)父类的
虚函数
在子类的
虚函数
前面。 3) 每个父类都有自己的虚表。 4) 子类的成员函数被放到了第一个父类的表中。(所谓的第一个父类是按照声明顺序来判断的) 安全性 一、通过父类型的指针访问子类自己的
虚函数
class A { public: virtual void fuc1(){}; };
详解C++
虚函数
原理
1、
虚函数
虚函数
是类中比较特殊的成员函数,通过在普通成员函数的前面加上“virtual”关键字声明。因为基类指针不能访问派生类的普通成员函数,但是可以访问派生类的
虚函数
,所以
虚函数
是实现C++多态性的关键。 派生类继承了基类的
虚函数
并重新定义(重写、覆盖)
虚函数
,通过基类指针去指向其派生类对象,进行动态绑定(延迟绑定),达到利用基类访问派生类
虚函数
的目的。如果没有
虚函数
,则总被限制在基类函数本身,无法调用派生类中被重写的函数。 2、
虚函数
实现原理
虚函数
表
虚函数
表指针 类对象在内存中的布
虚函数
实现多态的原理
1、C++中如何实现多态 基类中先声明一个
虚函数
至少有一个继承该基类的子类 2、
虚函数
实现多态的原理 当一个类中出现
虚函数
或着子类继承了
虚函数
时,就会在该类中产生一个
虚函数
表(virtual table),
虚函数
表实际上是一个函数指针数组(在有的编译器作用下是链表),里面的每一个元素对应指向该类中的某一个
虚函数
的指针。被该类声明的对象会包含一个
虚函数
表指针(virtual table pointer),指向该类的
虚函数
表的地址。
虚函数
的调用过程: 当一个对象要调用到
虚函数
时,先将对象内存中的vpt
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章