我有两个类。一个类继承自另一个类。我也将多态性与虚函数一起使用。我可以看到虚函数表吗?我想了解虚函数的机制。
public class A
{
public virtual void foo()
{
}
}
public class B:A
{
public override void foo()
{
}
}
...
A a=new B();
a.SomeMethod();//show table of virtual function
我有两个类。一个类继承自另一个类。我也将多态性与虚函数一起使用。我可以看到虚函数表吗?我想了解虚函数的机制。
public class A
{
public virtual void foo()
{
}
}
public class B:A
{
public override void foo()
{
}
}
...
A a=new B();
a.SomeMethod();//show table of virtual function
不可能真正看到虚拟表,因为 CLR 多态机制不是基于为每个实例分配的指针,该指针指向您可能熟悉的 C++ 语言中的虚拟表。
.NET 为每个实例保留一个指向类型对象的指针,该类型对象分别指向管理要调用的实际实现的方法表。
在这里查看更多详细信息。