Индекс vptr должен отображать все виртуальные функции, но в моем случае отображаются только 2 из 3 виртуальных функций.
Я предоставляю полный код и снимки экрана ниже: -
ClassHeader.h
#include <iostream>
using namespace std;
// Employee Class
class Employee
{
public :
int salary ;
Employee(){cout << "Inside CTOR" << endl;}
virtual ~Employee() {cout << "Inside DTOR" << endl;}
virtual void pay(){cout << "Employee" << endl;}
};
// Manager Class
class Manager : public Employee
{
public :
virtual void pay(){cout<< "Manager pay" << endl;}
virtual void Rank(){cout << "Manager Rank" << endl;}
};
// JuniorManager Class
class JuniorManager : public Manager
{
public :
virtual void pay(){cout<< "JuniorManager pay" << endl;}
virtual void Rank(){cout << "JuniorManager Rank" << endl;}
};
main.cpp
#include "ClassHeader.h"
void main()
{
Manager *p = new Manager();
p->pay();
p->Rank();
p = new JuniorManager();
p->Rank();
Employee *pE = dynamic_cast<Employee*>(p);
pE->pay();
}
Класс Manager имеет две виртуальные функции, pay и Rank, но в vptr отображается только pay.
Может кто-нибудь сказать мне, почему Ранг не появляется, хотя его виртуальная функция.
Я использую Visual Studio 2008 с последними обновлениями в 64-разрядной версии Windows 7.
Скриншот отладчика JuniorManager
Виртуальные функции также не отображаются. Пожалуйста, смотрите изображение ниже.