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 |