C++ Primer Chapter 14-5

1:重載函數轉換構造函數也會造成二義性
  1. f(const A &);//(1)
  2. f(const B &)//(2)
  3. class A
  4. {
  5. A(int);
  6. }
class B
{
B(int);
}
int a = 9;
f(a); // 這裏就有二義性
 a 既可以調用 (1) ,也可以調用 (2),二義性。當然我們都可以顯示的指出來來消滅二義性

2:如何判斷二義性:
通過列出從源到目標的轉換路徑,然後比較級別,如果最合適的路徑最高級別路徑兩條及兩條以上,則有二義性。

3:表達式中運算符函數候選集,包括成員函數非成員函數

4:如果我們在類中重載了運算符,同時有定義了目標算術類型的類型轉換,那麼就存在重載運算符內置運算符的二義性問題。詳見page522

5:基類一般定義所有類都有的共同屬性虛函數就實現了基類子類的區別。

6:子類的虛函數如果重新定義,那麼子類就會調用自己的函數,如果沒有定義,那麼就調用父類的

7:在使用基類的引用指針調用一個虛函數時會發生動態綁定

8:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章