L'indice vptr dovrebbe visualizzare tutte le funzioni virtuali, ma nel mio caso solo 2 delle 3 funzioni virtuali vengono visualizzate.La funzione virtuale non è elencata nel vptr
sto fornendo il codice completo e gli screenshot qui sotto: -
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();
}
La classe Manager ha due funzioni virtuali, pagare e Classifica, ma solo la paga viene mostrata nella vptr.
Qualcuno può dirmi, perché Rank non viene visualizzato, anche se la sua funzione virtuale.
Sto utilizzando Visual Studio 2008 e con gli ultimi aggiornamenti, su Windows 7 a 64 bit.
JuniorManager Debugger Schermata
Non mostra le funzioni virtuali sia. Si prega di vedere l'immagine qui sotto.
Visual Studio ci dice _Base class di 'Manager' 'Employee'ha 2 funzioni virtuali: destructor e pay_. Cosa c'è che non va? – Lol4t0
_void_ main()? C++ consente int main() e int main (int, char **). – Collin