虚函数和纯虚函数的区别和作用

作者&投稿:宗政恒 (若有异议请与网页底部的电邮联系)
~ 虚函数的作用是“运行时多态”和重载,父类中提供虚函数的实现,为子类提供默认的函数实现;子类可以重写父类的虚函数实现子类的特殊化。
虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstractclass),而只含有虚函数的类(class)不能被称为抽象类(abstractclass)。虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!


想问下C++纯虚函数相比于虚函数的直接作用
这样所有像Animal的成员函数Draw那样,需要绘图的函数,都只需要有一个抽象类的指针或者引用,就可以绘图了,这就是纯虚函数的意义。再举个伪代码的例子:class Animal { public:virtual SayHi()= 0;\/\/无法实现,也没有必要实现。当然写个空的虚函数也行,但是万一我的函数需要返回值怎么办?强行写个...

我想问问“纯虚函数调用”是什么?
纯虚函数是为了定义抽象类而建立的,抽象类的存在只是为了被继承,不可以创建类对象,纯虚函数没有函数体,如果要在派生类中调用纯虚函数,必须在派生类中将其实现,也就是定义,然后才能在派生类中调用纯虚函数!

纯虚函数的定义
当一个类包含纯虚函数时,它被称为抽象类,其主要用途是作为基类为其他类提供模板或接口,而非直接创建对象。抽象类的独特性在于,除非派生类完全实现了基类中的所有纯虚函数,否则它也将成为抽象类,无法实例化对象。通常,纯虚函数的函数体是空缺的,即默认无实现。然而,人们有时会忽略这个细节,误...

下列表示纯虚函数的成员函数是( )。A.virtualintfunc(int);B.voidfunc...
【答案】:C C。【解析】本题考查纯虚函数的定义形式。由于纯虚函数在最后要有“=0”,故据此排除A和D。而B中没有出现virtual关键词,故正确答案为C。

纯虚拟函数调用是什么意思运行时错误! 程序:C:\\ Program Files文件\\...
需要你按照接口规格形式去实现这个函数才能调用。有些虚函数是已经实现了一个函数,又允许你用你的函数覆盖这个虚函数,按照你的函数来执行;而未实现有函数接口的虚函数就是纯虚函数.纯虚函数像没有实例的指针,不知指向哪里,你去调用没有实例的指针,是会运行报错的。

想问下C++纯虚函数相比于虚函数的直接作用
这样所有像Animal的成员函数Draw那样,需要绘图的函数,都只需要有一个抽象类的指针或者引用,就可以绘图了,这就是纯虚函数的意义。再举个伪代码的例子:class Animal { public:virtual SayHi() = 0; \/\/无法实现,也没有必要实现。当然写个空的虚函数也行,但是万一我的函数需要返回值怎么办?强行...

什么是纯虚类
纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

virtual void fun()与virtual void fun()=0有什么区别?
前者是定义一个虚函数,后者是定义一个纯虚函数,可以理解为接口。虚函数在C++里的作用是为了配合多态使用,也就是说,基类的指针指向派生类的对象时,我们调用的这个虚函数,实际上是当前实际的派生类对象响应(如果派生类实现了该方法)这个过程推荐看下关于面向对象的一大特性多态。

c++的虚函数问题
加上=0之后实际上就是声明了函数为纯虚函数,纯虚函数是不需要有定义的(即函数体),去掉=0之后必须定义函数体,你编译报错应该是unresolved external symbol,只需要加两个空函数体(即{})就可以了 至于说是选择纯虚函数还是虚函数要看具体情况 附加:C++里面的函数声明之后必须要有定义的,否则就会...

java和c有什么关系?
4、在抽象方法或抽象类的区别C语言的对等语法是“纯虚函数”和“抽象类”Java使用abstract关键字修饰抽象方法或抽象类,final类不能被继承。C语言和JAVA是什么关系? JAVA是基于C语言的基础上于近年开发出来的一款新的编程软件。。C语言可以作为进入编程的一个基础。JAVA可以作为编程的深入发展。。JAVA用的范围绝对比C...

南雄市18668981952: c++的虚函数和纯虚函数有什么不同呀? -
唱子利康: 相同点:虚函数和纯虚函数都是为了实现多态机制的,目的是给派生类修改基类行为的机会. 不同点:虚函数可以在基类中定义默认的行为,如果派生类没有对其行为进行覆盖,则基类的默认行为生效,如果派生类对其覆盖,则会自动调用派生类的行为;纯虚函数不在基类中提供默认的行为,只是提供一个接口声明. 因此,纯虚函数只是声明接口,不提供行为实现.包含了纯虚函数的类被称为虚基类,无法声明实例.纯虚类生来就是需要被继承并修改其行为的.

南雄市18668981952: 什么是虚函数?什么是纯虚函数? -
唱子利康: 虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本. 有纯虚函数的类是抽象类,不能生成对象,只能派生.他派生的类的纯虚函数没有被改写,那么,它的派生类还是个抽象类. 定义纯虚函数就是为了让基类不可实例化化, 因为实例化这样的抽象数据结构本身并没有意义. 或者给出实现也没有意义 实际上我个人认为纯虚函数的引入,是出于两个目的, 1.为了安全.因为避免任何需要明确但是因为不小心而导致的未知的结果. 提醒子类去做应做的实现. 2.为了效率,不是程序执行的效率,而是为了编码的效率.

南雄市18668981952: C++ 虚函数和纯虚函数的区别 -
唱子利康: 虚函数与纯虚函数 在他们的子类中都可以被重写.它们的区别是: (1)纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码. 纯虚函数一般没有代码实现部分,如 virtual void print() = 0; 而一般虚函数必须要有代码的实现部分

南雄市18668981952: C/C++面试题:虚函数与纯虚函数有什么区别 -
唱子利康: 虚函数和纯虚函数有以下所示方面的区别 (1)类里如果声明了虚函数,这个函数是实现的,哪怕是空实现,它的作用就是为了能让这个函数在它的子类里面可以被覆盖,这样的话,这样编译器就可以使用后期绑定来达到多态了.纯虚函数只是...

南雄市18668981952: c++中的纯虚函数与虚函数在应用上有什么差别?? -
唱子利康: 纯虚函数就是为了阻止这个类的实例化.使其成为抽象类. 当然虚函数不提供实现看起来也能阻止类的实例化,但它和纯虚函数比起来还有以下不足: 1、一方面,从语法上说是不清晰的,你的类的使用者在在看到你的类的定义的时候无法确定哪些函数是没有提供实现的虚函数,而如果你写成纯虚函数就非常明确,一眼就可以看出来. 2、另一方面,虚函数不提供实现,如果使用者试图实例化这个类,在编译阶段无法发现错误,必须等到链接阶段才能发现,而且链接错误也仅仅是“无法解析的外部符号”,这种错误提示很不明确,当错误较多时很难找到真正的原因. 而如果是纯虚函数则编译器在编译阶段就直接会报错,并且会在错误中明确告知使用者不应实例化抽象类,非常便于定位错误.

南雄市18668981952: 想问下C++纯虚函数相比于虚函数的直接作用 -
唱子利康: 1. 虚函数和纯虚函数可以定义在同一个类中,含有纯虚函数的类被称为抽象类,而只含有虚函数的类不能被称为抽象类.2. 虚函数可以被直接使用,也可以被子类重载以后,以多态的形式调用,而纯虚函数必须在子类中实现该函数才可以使用,...

南雄市18668981952: 虚函数与纯虚函数的区别,我的理解是不是子类的函数实现了父类的函数,但是重写了方法,就是纯虚函数 -
唱子利康: 1. lz的理解还是有些出入.虚函数与纯虚函数 在他们的子类中都可以被重写.它们的区别是: (1)纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码. (2)包含纯虚函数的类不能定义其对象,而包含虚函数的则可以. 2. 虚函数的引入主要是为了实现多态,这部分内容是c++的精髓. 3. lz不懂可继续追问

南雄市18668981952: C++中纯虚函数和空的虚函数各自的作用是什么呢?他们应该怎么样区分呢? -
唱子利康: 虚函数是C++多态的一种表现 例如:子类继承了父类的一个函数(方法),而我们把父类的指针指向子类,则必须把父类的该函数(方法)设为virturl(虚函数). 使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价.如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virturl 函数名=0 我们把这样的函数(方法)称为纯虚函数. 如果一个类包含了纯虚函数,称此类为抽象类

南雄市18668981952: 纯虚函数和虚函数有什么区别吗(我知道它们的声明方式) -
唱子利康: 使用虚函数,可以灵活的进行动态绑定,当然是以一定的开销为代价. 如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virtual 函数名=0 我们把这样的函数(方法)称为纯虚函数.也就是说,虚函数 ,子类可以不重写,直接继承父类 的方法来使用,也可以重写 但是 纯虚函数是子类是必须重写了才可以使用

南雄市18668981952: C++中纯虚函数和虚函数在定义上的区别是什么 -
唱子利康: 主要就是纯虚函数相比虚函数在定义的时候没有定义函数体而且会在定义的时候在后面多加一句“=0”

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网