#include using namespace std;
class fish
};
class carp : public fish
};
void showinf(fish fish) // 直接進行普通的值傳遞
int main()
當函式引數是父類物件且傳入的引數是子類物件,然而我們用的是普通值傳遞時,子類物件僅僅將自己繼承的那部分資料複製給子類形參。
#include using namespace std;
class fish
};
class carp : public fish
};
void showinf(fish& fish) // 進行引用值傳遞
當用&引用的方式進行值傳遞時,就相當將自己閹割成父類物件的樣子,即將只屬於自己的那一部分割去。然後將剩下的這一部分當作實參傳遞給函式。
我們這裡要注意的是虛函式,當父類中有與子類同名的虛函式時,此時子類的成員函式會覆蓋父類中的虛成員函式。因此,閹割剩下的部分並不與原父類成員相同。虛函式的作用原理詳見「虛函式表」。
我們看到父類中的showinf()函式被宣告為virtual型別的了,那虛函式是如何作用的呢?
我個人理解:虛函式的虛字可以理解為「形同虛設」,當我們宣告父類的showinf()函式為虛函式同時我們在子類中也宣告乙個showinf()函式,那麼在子類中,showinf()函式正好可以覆蓋父類中的同名函式(形同虛設的函式)。
詳細講解請參考:
#include using namespace std;
class fish
};
class carp : public fish
};
void showinf(fish* fish)
int main()
深複製其實傳遞與操作的是物件的指標,因為當我們獲得位址(指標內容)後,我們可以調整指標型別用來訪問不同的有效區間,有效區間僅僅指的是記憶體中與指標型別相同的區域,並不會像值傳遞的方式閹割了一部分內容,用指標作為形參既靈活(可以調整指標型別從而調整指標指向內容)又高效(傳遞指標比值傳遞快得多)。 形參是父類的List,實參是子類的問題
需要對多個子類的集合進行同一種操作.本來可以寫多個方法就可以進行相應的多個方法的實現.現在想寫個簡單實用的方法,進行書寫.直接寫子父類的繼承,引數是父類,實參是子類是完全可以簡單實現的.但是現在的形參是父類的集合,實參是子類的集合,所以,在進行測試的時候,就多去想了想.所以用下面的來實現,感覺好多了...
函式呼叫引數為指標時,實參跟形參的問題
include void change int p int main 執行結果 0x7fffdb8192a4 0x7fffdb8192a4 0x7fffdb81928c 5 0x7fffdb8192a4 可以看出,實參跟形參是兩個不同的指標,只不過進入函式時,實參跟形參都指向main函式中的val位...
C語言自定義函式的形參為陣列時需要注意傳入長度
1 include 2 include 3 4 程式執行結果 5false sort 6length 174 8right sort 9length 5 104 5 7 8 9 11 12 13個人總結 14c c 傳遞陣列,15雖然傳遞的是首位址位址,16但是引數到了函式內,就成了普通指標,17不...