Groups
Groups
Sign in
Groups
Groups
竹林书馆
Conversations
About
Send feedback
Help
虚函数的实现
2 views
Skip to first unread message
李现民
unread,
Nov 25, 2007, 3:33:16 AM
11/25/07
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to lib
为了达到动态绑定的目的,C++编译器通过某个表格,在执行期"间接"调用实际上欲绑定的函数。这样的表格称为虚函数表(vtable)。每一个"内含虚函数的类",编译器都会为它做一个虚函数表,表中的每一个元素都指向一个虚函数的地址。此外,编译器当然也会为类加上一项成员变量,是一个指向该虚函数表的指针(vptr)。每一个由此类派生出来的对象都有这么一个vptr。当我们通过这个对象调用虚函数时,事实上是通过vptr找到虚函数表,再找出虚函数的真正地址。
虚函数表的内容是依据类中的虚函数声明次序,一一填入函数指针。派生类会继承基类的虚函数表(以及所有其他可以继承的成员),当我们在派生类中改写虚函数时,虚函数表就受到影响:表中元素所指的函数地址将不再是基类的函数地址,而是派生类的函数地址。
Reply all
Reply to author
Forward
0 new messages