2016 - 2024

感恩一路有你

虚函数和纯虚函数的作用 什么是虚函数和纯虚函数,有什么区别?

浏览量:2085 时间:2021-03-16 07:12:33 作者:admin

什么是虚函数和纯虚函数,有什么区别?

虚拟函数和纯虚拟函数都可以在它们的子类中重写。它们之间的区别在于:(1)纯虚函数只有定义,没有实现,虚函数既有定义又有实现代码。纯虚函数一般没有代码实现部分,如virtual void print()=0,而一般虚函数必须有代码实现部分,否则函数将是未定义的。Virtual void print(){printf(“this is Virtual functionn”)}(2)包含纯虚函数的类不能定义其对象,而包含虚函数的类可以定义其对象。

虚函数或纯虚函数主要用来解决什么问题?

虚拟函数用于后期动态绑定,可以实现运行时多态性。说白了,它是一个函数指针,决定了运行时要调用的目标。纯虚函数,顾名思义,是一个完全虚函数。它没有绑定到任何实际函数,是空的。纯虚函数主要用于防止类的实例化。类的派生必须实现函数,否则就不能实例化,这相当于C#或Java的抽象函数。如果一个类中的所有函数都是纯虚函数,那么这个类就构成了一个接口。

c 中,虚函数与纯虚函数的区别是什么?

虚拟函数和纯虚拟函数有以下区别。(1) 如果在类中声明了虚函数,则即使该函数为空,也会实现该函数。它的目的是使函数能够包含在其子类中。这样,编译器就可以使用后期绑定来实现多态性。纯虚函数只是一个接口,一个函数的声明,需要在子类中实现。(2) 虚拟函数不能在子类中重载,但是纯虚拟函数必须在子类中实现,就像Java接口一样。一般来说,在许多函数中添加虚拟元素是一个好习惯。虽然牺牲了一些性能,但是面向对象的多态性增加了,因为很难预测父类中的函数不在子类中,并且它的实现不会被修改。(3) 虚函数类用于“实现继承”,不仅继承接口,而且继承父类的实现。当然,你也可以完成你自己的实现。纯虚函数注重接口的统一性,通过子类实现。(4) 具有纯虚函数的类称为虚基类。这种基类不能直接生成对象。只有继承并重写虚拟函数后才能使用。这样的类也称为抽象类。

只含有纯虚函数的类是什么类?

除了Java中的抽象方法外,C中没有这样的定义。在Java中,只有抽象方法的类称为接口,而有抽象方法的类称为抽象类。在C语言中,具有纯虚函数的类称为抽象类。

虚函数纯虚函数是一个东西吗?

纯虚函数与其他函数的区别在于,其他虚函数将函数的地址放在虚表中,调用时根据地址调用函数。因为没有实现纯虚拟函数,所以虚拟表中第一个项的地址是uPureCall是一个函数,用于在非法调用时弹出错误消息。实际上,抽象类中的纯虚函数也可以实现(注意不要在声明中实现它们,尽管VC支持它们)。与此类似:

但事实上,调用派生类时,上面声明的函数不在虚拟表中,它本身也不在vbase的虚拟表中,它仍然在vbase的虚拟表Purecall函数中。因为C不支持定义行为本身。我的理解是,它可以像普通函数一样被调用。例如,输出仍然是base call,但是如果您调用(当然,这是一个非常糟糕的规范!)您会发现vbase的F还是原来的F,当对F()执行purecall时,会弹出错误提示pure virtual function call

虚函数和纯虚函数的作用 空指针与野指针的区别 虚函数和纯虚函数的区别

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。