设为首页 加入收藏

TOP

C++ virtual table pointer - vptr(二)
2015-07-20 17:17:04 来源: 作者: 【 】 浏览:9
Tags:virtual table pointer vptr
t of type D1 can access members of both D1 and Base. However, D1 has overridden function1(), making D1::function1() more derived than Base::function1(). Consequently, the entry for function1 points to D1::function1(). D1 hasn’t overridden function2(), so the entry for function2 will point to Base::function2().

D2’s virtual table is similar to D1, except the entry for function1 points to Base::function1(), and the entry for function2 points to D2::function2().

Here’s a picture of this graphically:

\

Although this diagram is kind of crazy looking, it’s really quite simple: the *__vptr in each class points to the virtual table fZ??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vciB0aGF0IGNsYXNzLiBUaGUgZW50cmllcyBpbiB0aGUgdmlydHVhbCB0YWJsZSBwb2ludCB0byB0aGUgbW9zdC1kZXJpdmVkIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIG9iamVjdHMgb2YgdGhhdCBjbGFzcyBhcmUgYWxsb3dlZAogdG8gY2FsbC48YnI+Cjxicj4KU28gY29uc2lkZXIgd2hhdCBoYXBwZW5zIHdoZW4gd2UgY3JlYXRlIGFuIG9iamVjdCBvZiB0eXBlIEQxOjxicj4KdmlldyBzb3VyY2U8YnI+CnByaW50Pzxicj4KMSAgICAgaW50IG1haW4oKTxicj4KMiAgICAgezxicj4KMyAgICAgICAgIEQxIGQxOzxicj4KNCAgICAgfTxicj4KPGJyPgpCZWNhdXNlIGQxIGlzIGEgRDEgb2JqZWN0LCBkMSBoYXMgaXShr3MgKl9fdnB0ciBzZXQgdG8gdGhlIEQxIHZpcnR1YWwgdGFibGUuPGJyPgo8YnI+Ck5vdywgbGV0oa9zIHNldCBhIGJhc2UgcG9pbnRlciB0byBEMTo8YnI+CnZpZXcgc291cmNlPGJyPgpwcmludD88YnI+CjEgICAgIGludCBtYWluKCk8YnI+CjIgICAgIHs8YnI+CjMgICAgICAgICBEMSBkMTs8YnI+CjQgICAgICAgICBCYXNlICpwYmFzZSA9ICZhbXA7ZDE7PGJyPgo1ICAgICB9PGJyPgo8YnI+Ck5vdGUgdGhhdCBiZWNhdXNlIHBiYXNlIGlzIGEgYmFzZSBwb2ludGVyLCBpdCBvbmx5IHBvaW50cyB0byB0aGUgQmFzZSBwb3J0aW9uIG9mIGQxLiBIb3dldmVyLCBhbHNvIG5vdGUgdGhhdCAqX192cHRyIGlzIGluIHRoZSBCYXNlIHBvcnRpb24gb2YgdGhlIGNsYXNzLCBzbyBwYmFzZSBoYXMgYWNjZXNzIHRvIHRoaXMgcG9pbnRlci4gRmluYWxseSwgbm90ZSB0aGF0IHBiYXNlLT5fX3ZwdHIgcG9pbnRzIHRvIHRoZSBEMSB2aXJ0dWFsIHRhYmxlISBDb25zZXF1ZW50bHksCiBldmVuIHRob3VnaCBwYmFzZSBpcyBvZiB0eXBlIEJhc2UsIGl0IHN0aWxsIGhhcyBhY2Nlc3MgdG8gRDGhr3MgdmlydHVhbCB0YWJsZS48YnI+Cjxicj4KU28gd2hhdCBoYXBwZW5zIHdoZW4gd2UgdHJ5IHRvIGNhbGwgcGJhc2UtPmZ1bmN0aW9uMSgpPzxicj4KdmlldyBzb3VyY2U8YnI+CnByaW50Pzxicj4KMSAgICAgaW50IG1haW4oKTxicj4KMiAgICAgezxicj4KMyAgICAgICAgIEQxIGQxOzxicj4KNCAgICAgICAgIEJhc2UgKnBiYXNlID0gJmFtcDtkMTs8YnI+CjUgICAgICAgICBwYmFzZS0+ZnVuY3Rpb24xKCk7PGJyPgo2ICAgICB9PGJyPgo8YnI+CkZpcnN0LCB0aGUgcHJvZ3JhbSByZWNvZ25pemVzIHRoYXQgZnVuY3Rpb24xKCkgaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uLiBTZWNvbmQsIHVzZXMgcGJhc2UtPl9fdnB0ciB0byBnZXQgdG8gRDGhr3MgdmlydHVhbCB0YWJsZS4gVGhpcmQsIGl0IGxvb2tzIHVwIHdoaWNoIHZlcnNpb24gb2YgZnVuY3Rpb24xKCkgdG8gY2FsbCBpbiBEMaGvcyB2aXJ0dWFsIHRhYmxlLiBUaGlzIGhhcyBiZWVuIHNldCB0byBEMTo6ZnVuY3Rpb24xKCkuIFRoZXJlZm9yZSwgcGJhc2UtPmZ1bmN0aW9uMSgpCiByZXNvbHZlcyB0byBEMTo6ZnVuY3Rpb24xKCkhPGJyPgo8YnI+Ck5vdywgeW91IG1pZ2h0IGJlIHNheWluZywgobBCdXQgd2hhdCBpZiBCYXNlIHJlYWxseSBwb2ludGVkIHRvIGEgQmFzZSBvYmplY3QgaW5zdGVhZCBvZiBhIEQxIG9iamVjdC4gV291bGQgaXQgc3RpbGwgY2FsbCBEMTo6ZnVuY3Rpb24xKCk/obEuIFRoZSBhbnN3ZXIgaXMgbm8uPGJyPgp2aWV3IHNvdXJjZTxicj4KcHJpbnQ/PGJyPgoxICAgICBpbnQgbWFpbigpPGJyPgoyICAgICB7PGJyPgozICAgICAgICAgQmFzZSBkMTs8YnI+CjQgICAgICAgICBCYXNlICpwYmFzZSA9ICZhbXA7ZDE7PGJyPgo1ICAgICAgICAgcGJhc2UtPmZ1bmN0aW9uMSgpOzx
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇lua学习笔记---选择,循环语句 下一篇Geometry Made Simple

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)
·使用华为开发者空间 (2025-12-27 04:19:24)
·Getting Started wit (2025-12-27 03:49:24)
·Ubuntu 上最好用的中 (2025-12-27 03:49:20)