Suj*_*osh 6 c++ visual-studio-2008
vptr索引应显示所有虚函数,但在我的情况下,只显示3个虚函数中的2个.
我提供完整的代码和截图如下: -
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;}
};
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
Manager类有两个虚函数,pay和Rank,但只有pay显示在vptr中.
有人可以告诉我,为什么Rank不显示,即使它的虚函数.
我在Windows 7 64位上使用Visual Studio 2008,并使用最新更新.

JuniorManager Debugger截图
它也没有显示虚函数.请看下面的图片.

如果您以 Employee 的身份检查该类,由于该类没有 Rank(),因此它不会在 vtable 中显示 Rank()。您的屏幕截图显示了 Employee 类的内容。
“是的,调试器没有足够的类型信息来判断数组的长度。因此它只显示第一个元素,除非被覆盖。”
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/23d4e48e-520e-45b4-8c2f-65c11946d75d
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |