我正在学习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;关键词做。