虚函数的概念与作用 什么是虚函数?
什么是虚函数?
虚拟函数定义:如果在基类中指定了一个函数,而在派生类中有另一个函数定义,编译器将知道我们不想静态连接函数。我们真正需要的是根据调用函数的对象的类型来选择在程序的特定位置调用哪个函数。
功能:用专业术语解释虚拟功能的功能就是实现多态性,多态性就是将接口和实现分开;用可视化语言解释虚拟功能的功能就是用常用的方法来实现,但由于个体差异,采用不同的策略。
什么是虚函数和纯虚函数,有什么区别?
虚拟函数和纯虚拟函数都可以在其子类中重写。它们之间的区别在于:(1)纯虚函数只有定义,没有实现,虚函数既有定义又有实现代码。纯虚函数一般没有代码实现部分,如virtual void print()=0,而一般虚函数必须有代码实现部分,否则函数将是未定义的。Virtual void print(){printf(“this is Virtual functionn”)}(2)包含纯虚函数的类不能定义其对象,而包含虚函数的类可以定义其对象。
虚函数的作用是什么?
C中虚函数的函数:1。为了方便地使用多态性,我们经常需要在基类中定义虚函数。2在许多情况下,基类本身生成对象是没有意义的。例如,作为基类,动物可以派生老虎和孔雀等子类,但动物自己生成对象显然是不合理的。为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtualreturntype function()=0)。然后编译器要求必须在派生类中重写函数才能实现多态性。具有纯虚函数的类称为抽象类,它不能生成对象。这是解决上述两个问题的好办法。在C中使用虚拟函数:例如,你有一个游戏,其中有一个虚拟基类叫做“怪物”和一个纯虚拟函数“攻击”。然后导出了wolf、spider和Python三个子类。它们都实现了各自不同的“攻击”功能。比如,狼咬人,蜘蛛吐丝,蟒蛇缠你。当许多怪物出现时,你可以定义一个虚拟基类指针数组,给它们各种怪物的指针,然后在迭代过程中用monster[i]->attack()直接攻击玩家。请参见下图:使用虚拟函数的注意事项:首先,包含虚拟函数的类指针列表将增加。2、 虚拟析构函数析构函数的功能是在对象被撤销之前进行必要的“清理场景”工作。当派生类的对象从内存中取出时,首先调用派生类的析构函数,然后调用基类的析构函数。当我们新建一个临时对象时,如果基类包含一个析构函数并定义了一个指向基类的指针变量。3、 构造函数不能声明为虚拟函数。构造函数不能声明为虚拟函数。如果声明为虚拟函数,编译器将自动报告。第四,我们不能在析构函数或构造函数中调用虚函数而不在析构函数或构造函数的过程中进行析构函数或构造函数。即使我们在构造函数或析构函数中调用虚函数,我们也不会向下调用派生类中的函数。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。