Chỉ mục vptr sẽ hiển thị tất cả các chức năng ảo, nhưng trong trường hợp của tôi chỉ có 2 trong số 3 chức năng ảo đang được hiển thị.Chức năng ảo không được liệt kê trong vptr
tôi cung cấp mã đầy đủ và các ảnh chụp màn hình dưới đây: -
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();
}
Lớp Manager có hai chức năng ảo, thanh toán và Xếp hạng, nhưng chỉ trả tiền hiển thị trong vptr.
Ai đó có thể cho tôi biết, tại sao Xếp hạng không hiển thị, mặc dù chức năng ảo của nó.
Tôi đang sử dụng Visual Studio 2008 và với các bản cập nhật mới nhất, trên Windows 7 64 bit.
JuniorManager Debugger Ảnh chụp màn hình
Nó không hiển thị các chức năng ảo một trong hai. Vui lòng xem hình ảnh bên dưới.
Visual studio cho chúng tôi biết _Base class của 'Manager' 'Employee'has 2 chức năng ảo: destructor và pay_. Chuyện gì vậy? – Lol4t0
_void_ main()? C++ cho phép int main() và int main (int, char **). – Collin