什么是c++虚函数,虚函数的作用和使用方法

 我来答
何度千寻
推荐于2018-04-21 · TA获得超过5899个赞
知道大有可为答主
回答量:1381
采纳率:91%
帮助的人:556万
展开全部

  在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。


  虚函数定义:简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。


  虚函数的作用:用同一个调用形式,既能调用派生类又能调用基类的同名函数。


  虚函数的使用方法是:

  1. 在基类用virtual声明成员函数为虚函数。
    这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便地被调用。在类外定义虚函数时,不必再加virtual。

  2. 在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体。
    C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此在派生类重新声明该虚函数时,可以加virtual,也可以不加,但习惯上一般在每一层声明该函数时都加virtual,使程序更加清晰。如果在派生类中没有对基类的虚函数重新定义,则派生类简单地继承其直接基类的虚函数。

  3. 定义一个指向基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。

  4. 通过该指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。
    通过虚函数与指向基类对象的指针变量的配合使用,就能方便地调用同一类族中不同类的同名函数,只要先用基类指针指向即可。如果指针不断地指向同一类族中不同类的对象,就能不断地调用这些对象中的同名函数。这就如同前面说的,不断地告诉出租车司机要去的目的地,然后司机把你送到你要去的地方。  

pqaabbccdd
推荐于2016-06-25 · TA获得超过1513个赞
知道小有建树答主
回答量:523
采纳率:0%
帮助的人:604万
展开全部
当一个基类或虚基类派生了多个子类时,并且这些子类都重写了基类的一个虚函数,那么当你创建了多个子类对象时,可以把这些对象组成一个基类数组,通过类基对象或基类对象指针可以调用同一个函数名而执行的是不同的子类的函数,这就是虚函数最根本的用途,这是一个后期绑定机制,在编译前,对象的类型是不可知的。在编译时才确定对象的类型,从而调用合适的函数。
class A
{
public:
A();
void f1();
virtual void f2();
virtual void f3()=0;
virtual ~A();
};
class B : public A
{
public:
B();
void f1();
void f2();
void f3();
virtual ~B();
};
int main(int argc, char* argv[])
{
A *m_j=new B();
m_j->f1();
m_j->f2();
m_j->f3();
delete m_j;
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式