首页 百科知识 ++虚成员函数

++虚成员函数

时间:2022-09-22 百科知识 版权反馈
【摘要】:在本例中我们需要注意的是在类内声明时display函数通过在返回类型前添加了virtual关键字而被声明为了虚函数,而在类外定义时,display函数的返回类型前并未添加virtual关键字。例2:在本例中,我们将例1中派生类的display成员函数声明时所用的virtual关键字去掉,编译并运行程序,结果显示程序运行结果仍然保持不变。和普通的成员函数一样,虚成员函数同样可以被继承。


例1:

#include<iostream>

using namespace std;


class base

{

public:

    virtual void display();

};


class derived: public base

{

public:

    virtual void display();


};


void base::display()

{

    cout<<"I'm base class!"<<endl;

}


void derived::display()

{

    cout<<"I'm derived class!"<<endl;

}


int main()

{

    base * p = new base;

    p->display();

    delete p;

    p = new derived;

    p->display();

    delete p;

    return 0;

}

在本例中,我们将两个类中的display函数在类内部声明,类外部定义,当然这么修改并不会改变程序的运行结果。在本例中我们需要注意的是在类内声明时display函数通过在返回类型前添加了virtual关键字而被声明为了虚函数,而在类外定义时,display函数的返回类型前并未添加virtual关键字。

另外在例1中,我们在基类和派生类中的display函数声明时都加上了virtual关键字,以表示将其声明为虚函数,而实际上这是不需要的,我们只需要将基类中的display函数通过virtual关键字声明为虚函数,之后即使在派生类中display函数声明时未加上virtual关键字,但它在所有的派生类中都将自动成为虚函数。

例2:

#include<iostream>

using namespace std;


class base

{

public:

    virtual void display();

};


class derived: public base

{

public:

    void display();


};


void base::display()

{

    cout<<"I'm base class!"<<endl;

}


void derived::display()

{

    cout<<"I'm derived class!"<<endl;

}


int main()

{

    base * p = new base;

    p->display();

    delete p;

    p = new derived;

    p->display();

    delete p;

    return 0;

}

在本例中,我们将例1中派生类的display成员函数声明时所用的virtual关键字去掉,编译并运行程序,结果显示程序运行结果仍然保持不变。

和普通的成员函数一样,虚成员函数同样可以被继承。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈