C++中的虚函数(virtual function)

2022-08-04 00:00 评论 0 条

换句话说,在虚表指针没有正确初始化之前,我们不能够去调用虚函数。

现在应该对多态、虚函数、晚绑定有比较清楚的了解了吧。

如果你只满足如下两点特征:1.只了解有了虚函数就可以通过基类指针调用派生类的函数这一说法,却对概念只有一点模糊的认识;2.希望对虚函数有更进一步的认识。

可是为什么pB和pD做等运算后,却输出的值是1呢?这是因为当编译器发现一个指向派生类的指针和指向某个基类的指针进行==运算时,会自动将指针做隐士类型提升已屏蔽多重继承带来的指针差异,只要两个指针指向同一个内存实例。

多态性使得程序调用的函数是在运行时动态确定的,而不是在编译时静态确定的。

这种类不能声明对象,只是作为基类为派生类服务。

如果想调用cy1中的直接基类Circle的area函数,应当表示为cy1.Circle::area。

这个表是一个在编译时确定的静态数组。

虚函数突破了这一限制,在派生类的基类部分中,派生类的虚函数取代了基类原来的虚函数,因此在使基类指针指向派生类对象后,调用虚函数时就调用了派生类的虚函数。

虚函数声明如下:virtualReturnTypeFunctionName(Parameter);虚函数必须实现,如果不实现,编译器将报错,错误提示为:errorLNK****:unresolvedexternalsymbol"public:virtualvoid__thiscallClassName::virtualFunctionName(void)"3、对于虚函数来说,父类和子类都有各自的版本。

而构造函数是用来实例化一个对象的,通俗来讲就是为对象内存中的值做初始化操作。

多继承中的虚函数3.4什么时候使用虚函数在你设计一个基类的时候,如果发现一个函数需要在派生类里有不同的表现,那么它就应该是虚的。

定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。

这就实现了多态。

在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:C++中的虚函数(virtual function) | bwin客户端登录 – 最新官网app下载
分类:区块链 标签:

发表评论


表情