首页 > 解决方案 > C++中虚函数的意义

问题描述

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

该程序使用 virtual 关键字:

#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

在这里我可以看到差异,但我无法了解为什么输出存在差异以及“虚拟”关键字究竟在做什么。

标签: c++14

解决方案


推荐阅读