什么是虚函数
答案:5 悬赏:40 手机版
解决时间 2021-03-22 13:12
- 提问者网友:無理詩人
- 2021-03-21 15:57
什么是虚函数
最佳答案
- 五星知识达人网友:逐風
- 2021-03-21 17:19
可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时,
基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数,
而不是基类中定义的成员函数(只要派生类改写了该成员函数)。
若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都
会调用基类中定义的那个函数。
例
class A
{
virtual void AAA()
{
cout<<"这是基类的!";
}
};
class a:A
{
void AAA()
{
cout<<"这是派生类a!";
}
};
然后你生成a的实例,调用AAA()方法时,程序调用的是a中的AAA,而不是A中的AAA
如果你不定义virtual,在生成a的实例后调用的是基类的AAA()
基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数,
而不是基类中定义的成员函数(只要派生类改写了该成员函数)。
若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都
会调用基类中定义的那个函数。
例
class A
{
virtual void AAA()
{
cout<<"这是基类的!";
}
};
class a:A
{
void AAA()
{
cout<<"这是派生类a!";
}
};
然后你生成a的实例,调用AAA()方法时,程序调用的是a中的AAA,而不是A中的AAA
如果你不定义virtual,在生成a的实例后调用的是基类的AAA()
全部回答
- 1楼网友:洎扰庸人
- 2021-03-21 19:42
和复变函数相关的,含虚数
i就是虚数,它是用 i^2=-1 来定义的
虚数域与实数域构成复数域这个集合
说简单点虚函数就是复变函数的一部分,
复变函数是大学的内容,不要太关注了,还是很难学的
i就是虚数,它是用 i^2=-1 来定义的
虚数域与实数域构成复数域这个集合
说简单点虚函数就是复变函数的一部分,
复变函数是大学的内容,不要太关注了,还是很难学的
- 2楼网友:躲不过心动
- 2021-03-21 19:23
所谓的虚函数就是在Delphi中函数后面带关键字virtual的函数,它的作用主要就是后期绑定。所谓的后期绑定就是一个基类中有一个虚函数,而派生类中重写了这个函数,那么调用的这个虚函数的时候根据类的实例的不同而调用不同的函数。
所谓的实例就是对象,就是类的实现的东东。要使用类就需要创建类的实例,否则类就不能使用,除非使用类的静态函数和静态成员。
如果还不清楚,那么推荐你去看《Object Pascal技术手册》里面好像有讲,《Delphi x开发人员指南》里面好像也有讲,这些问题比较基础,应该自己去看书
所谓的实例就是对象,就是类的实现的东东。要使用类就需要创建类的实例,否则类就不能使用,除非使用类的静态函数和静态成员。
如果还不清楚,那么推荐你去看《Object Pascal技术手册》里面好像有讲,《Delphi x开发人员指南》里面好像也有讲,这些问题比较基础,应该自己去看书
- 3楼网友:一秋
- 2021-03-21 19:14
虚函数实际上就是某个类的一个成员函数,只是这个成员函数的声明带有virtual关键字,这样可以实现C++中的多态,具体用法就和楼上说的差不多
每个类都有一个虚函数表,只要你在类中定义了一个虚函数,编译器便会在你的类中添加一个隐藏变量(一个void型的指针)指向这个表的入口地址
每个类都有一个虚函数表,只要你在类中定义了一个虚函数,编译器便会在你的类中添加一个隐藏变量(一个void型的指针)指向这个表的入口地址
- 4楼网友:归鹤鸣
- 2021-03-21 18:38
虚函数是重载的另一种表现形式,是一种动态的重载方式。
原类:class1
虚函数 A
由class1 继承类 class2
重新定义函数 A
这样当你用class1产生的对象 调用A 为class1的A
用class2产生的对象 调用A 为class2的A
原类:class1
虚函数 A
由class1 继承类 class2
重新定义函数 A
这样当你用class1产生的对象 调用A 为class1的A
用class2产生的对象 调用A 为class2的A
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |