三九宝宝网宝宝百科宝宝知识

派生类指针指向基类对象如何调用其成员函数

02月10日 编辑 39baobao.com

[派生词有哪些情况]派生词同“附加式合成词”条。联合式复合词由地位平等的两个词素构成的复合词。名词、动词、形容词都有。从词素的意义看,主要有三种情况: (1)由两个同义的词素构成。如“宾客”...+阅读

用:pb->f(); 即可。 类A中有了虚函数就会再类的数据成员的最前面添加一个vfptr指针(void** vfptr),这个指针用来指向一个vtable表

(一个函数指针数组)

(一个类只有一个该表),该表存储着当前类的所有 虚函数 的地址。这样vfptr就成为了一个类似成员变量的存在。访问虚函数的时候通过vfptr间址找到vtable表,再间址进而找到要调用的函数。这样就在一定程度上摆脱了类型制约。 只要vptr的值不同,那么访问函数成员的时候使用的vtable表就不同,就可能访问到不同类的函数成员。B类对象中的vptr指向B类自己的vtable。 当B类继承A类的时候,因为A中有虚函数,编译器就自动的给B类添加vfprt指针和vtable表。也可以理解为B类继承来了A类中的那个vptr指针成员。 当A类指针指向B类对象时,发生假e68a84e8a2ad3231313335323631343130323136353331333337616463切割。要知道这个过程只是切掉A类中没有的那些成员,由于vptr是从A类中继承来的,所以这个量仍将保留。而对于vptr的值则不会改变,仍然指向B类的vtable表。所以访问F1函数的时候是通过B类的vtable表去寻址的,自然就是使用子类的函数。 当B类的指针指向A类的对象时(当B类存在新增数据成员时可能出错),同理。 而对于普通函数则受类型的制约,(因为没有vptr指针)使用哪个类的指针调用函数,那么所调用的就是那个累的函数。 总而言之,普通函数通过对象或指针的类型来找所调用的函数,而虚函数是通过一个指针来找到所要调用的函数的。

以下为关联文档:

从专业角度讲一下衍生词和派生词各是什么1.衍生:是“通过演变而产生的”,“衍生”实际上或理论上从母体物质得到的物质。例如衍生物(derivative)是指较简单的化合物所含的原子或原子团被其他原子或原子团置换而生成的较...

初中英语派生词都有什么词根词缀学英语单词是很好的方法,下面是初中英语单词构词法前缀后缀词汇一览表。 前缀 例词 派生词 un- “不” happy unhappy like unlike usual unusual friendly unfriend...

派生诉讼存在哪些问题派生诉讼存在以下问题: 1。原告主体资格的确立。 各国公司法对原告资格的限制主要表现为两个方面:一是持股时间要求。英美法系国家对此采用“当时股份持有原则”,即要求派生诉...

css样式中id选择器建立派生选择器无法正确显示内容有一点你需要明白! p标签里面是不能嵌套p标签的,就算你是: 123 345 , 在浏览器里面是这样的: 123 345 所以,你的#sidebar p的样式是没有用的。因为在id为sidebar下面没有p标签 ps...

高考词汇中按词根分类的派生一、英语最常用前缀、后缀前 缀 意 义 单 词 加前缀派生词 加后缀派生词ad- 向、到 join加入 adjoin邻接 adjoining邻接的, 隔壁的re- 回 turn转动 return回来 returnless回...

二维数组和数组指针的初始化char m[3][4]; m[3][4]={"asd","fgh","jkl"}; 当然不行,不管从初始化器,还是从原理上来讲都不正确,首先a[3][4]表示的是数组中第4行第5个元素,请问,可以对数组中具体的一个元素赋这么长...

如果一个类里面的构造函数的参数含有这个类的对象指针那怎么初不用担心,你这个问题不存在。 解决办法,让next = NULL,next想必你要表示的是链表的下一个,对吧,构造这一个的时候,下一个设置为NULL,是个不错的选择。 即使一定要构造,也不存在这个...

如何正确调用Create或者CreateEx函数生成CWnd类派生类的具有WSnew 一个CWnd,再Create不就成功了么Create的参数很简单啊,你注意不同的控件,有不同的字符串标示,比如:_T("EDIT") _T("LISTBOX")等,剩下的参数是窗口位置、样式、父窗口、ID,这些都好赋...

基类指针如何访问派生类新增成员函数#include<iostream> using namespace std; class A { public: virtual void show()=0; }; class B:public A { public : void show(){cout<&lt;"原基类函数"<<endl;}void show_...

推荐阅读
图文推荐