这篇文章主要介绍了C++ COM编程之接口背后的虚函数表,COM的背后,就是接口,而接口的背后,就是虚函数表,需要的朋友可以参考下
前言
学习C++的人,肯定都知道多态机制;多态就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。对于多态机制是如何实现的,你有没有想过呢?而COM中的接口就将这一机制运用到了极致,所以,不知道多态机制的人,是永运无法明白COM的。所以,在总结COM时,是非常有必要专门总结一下C++的多态机制是如何实现的。
多态
什么是多态?上面也说了,多态就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。现在通过代码,让大家切身的体会一下多态:
复制代码 代码如下:
#include
using namespace std;
class A
{
public:
void Print()
{
cout<<“I am A.”<<endl;
}
};
class B : public A
{
public:
void Print()
{
cout<<“I am B.”<<endl;
}
};
int main()
{
A *pAObj = new B();
pAObj->Print();
}
上面代码的运行结果是:I am A.这不是多态的行为。
好了,经过对上面代码的改造,就在A类的Print函数前面加入关键字virtual,具体代码如下:
复制代码 代码如下:
#include
using namespace std;
class A
{
public:
virtual void Print()
{
cout<<“I am A.”<<endl;
}
};
class B : public A
{
public:
void Print()
{
cout<<“I am B.”<<endl;
}
};
int main()
{
A *pAObj = new B();
pAObj->Print();
}
此时,代码的运行结果为:I am B.这个时候就表现出来了多态行为。好了,多了我也不说了,就通过这个简单的例子,你就能体会到多态的概念了。从下面才开始今天的主题。
虚函数表