f(const A &);//(1)
f(const B &)//(2)
class A
{
A(int);
}
class B
{
B(int);
}
int a = 9;
f(a); // 這裏就有二義性
a 既可以調用 (1) ,也可以調用 (2),二義性。當然我們都可以顯示的指出來,來消滅二義性。
2:如何判斷二義性:
通過列出從源到目標的轉換路徑,然後比較級別,如果最合適的路徑,最高級別的路徑有兩條及兩條以上,則有二義性。
3:表達式中運算符的函數候選集,包括成員函數和非成員函數。
4:如果我們在類中重載了運算符,同時有定義了目標是算術類型的類型轉換,那麼就存在重載運算符和內置運算符的二義性問題。詳見page522;
5:基類一般定義所有類都有的共同屬性,虛函數就實現了基類和子類的區別。
6:子類的虛函數如果重新定義,那麼子類就會調用自己的函數,如果沒有定義,那麼就調用父類的。
7:在使用基類的引用或指針調用一個虛函數時會發生動態綁定。
8: