詳見《C++Primer》[第五版]719頁
如果繼承路徑上沒有和虛基類成員重名的成員,則不存在二義性,因為我們僅能訪問到虛基類成員。
當訪問僅有一條繼承路徑上含有和虛基類成員重名的成員,也不存在二義性。派生類的成員的優先級比基類的成員高,所以說如果沒有用名字空間強制訪問虛基類的同名成員的話,訪問訪問的就是派生類的重名成員。
當訪問含有兩條及以上路徑上含有和虛基類成員重名的成員時就會產生二義性。
例如:
B中含有成員x,D1,D2均 虛繼承 B,D繼承了D1,D2,則:
- 如果D1,D2中均不含成員x,則不存在二義性,D.x訪問的是B中的x
- 如果D1中含有x,D2中不含有,則不存在二義性,D.x訪問的是D1.x
- 如果D1,D2中均含有x,則產生二義性。