Я изучаю 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
Здесь я вижу разницу, но я не могу понять, почему есть разница в выводе и что именно делает "виртуальное" ключевое слово.