虚函数在C ++中的意义

时间:2018-05-13 11:40:10

标签: c++14

我正在学习C ++并且遇到了虚函数。我知道虚函数是在基类中声明的并在派生类中使用的函数。在定义的基础上,我尝试制作两个简单的程序。请参阅以下内容:

本程序使用虚拟关键字:

#include <iostream>

using namespace std;

class Name {

    public :
            Virtual void myName() {
                cout << "My First Name is Varun" << endl ;
            }

};

class LName: public Name{

    public :
           void myName() {

               cout << "My Last Name is Srivastava" << endl;

           }

};

int main() {

    Name *name = new Name();
    name -> myName();
    LName *lname = new LName();
    lname -> myName();

    Name *nm;
    LName ln;

    nm = &ln;
    nm -> myName();
    ln.myName();


}

输出:

My First Name is Varun
My Last Name is Srivastava
My Last Name is Srivastava
My Last Name is Srivastava

以下示例没有虚拟关键字:

#include <iostream>

using namespace std;

class Name {

    public :
            void myName() {
                cout << "My First Name is Varun" << endl ;
            }

};

class LName: public Name{

    public :
           void myName() {

               cout << "My Last Name is Srivastava" << endl;

           }

};

int main() {

    Name *name = new Name();
    name -> myName();
    LName *lname = new LName();
    lname -> myName();

    Name *nm;
    LName ln;

    nm = &ln;
    nm -> myName();
    ln.myName();


}

输出:

My First Name is Varun
My Last Name is Srivastava
My First Name is Varun
My Last Name is Srivastava

在这里,我可以看到差异,但我无法理解为什么输出存在差异,究竟是什么&#34;虚拟&#34;关键词做。

0 个答案:

没有答案