我们都知道虚函数为多态的实现起了关键作用,没有虚函数,多态也无从实现了。但是虚函数到时候是怎么做出来的呢,C++编译器是怎么达到动态绑定的目的的呢? 其实C++编译器会建立一个虚函数表,每一个含有虚函数的类,编译器都会为它做出一个虚函数表,表中的每一个元素都指向一个虚函数的地址,这样在执行期就可以间接调用实际上想要绑定的函数了。此外,编译器还会为类加上一个成员变量,是一个指针,用来指向该虚函数表的(那指针常被称为vptr)。下面是一个例子: class a{ public: virtual void vfunc(); public: data; }; 这样的话a对象实例在内存中占据这样的空间: |
关于类与对象的一些心得
发帖者
coolzgx
时间:
3/13/2009
订阅:
博文评论 (Atom)

没有评论:
发表评论