不要以多型方式處理陣列

2022-08-23 11:33:09 字數 464 閱讀 3062

class bst;

class balancebst:public bst;

vvoid printbstarray(ostream &s,const bst array,int numelements)

{for(int i = 0;i < numelements;++i)

{s編譯器必須能夠有能力決定陣列中物件的大小。當你給的balancebst他可能會誤認為為bst物件,而一般dervied classes比base classes

有更多的data memebers。當你嘗試通過乙個base class刪除乙個由derived class objects組成的陣列。

***c++語言規範中說,通過base classe 指標刪除乙個由derived classes objects構成的陣列,其結果未定義。

結論:多型和指標算術又能混用。陣列物件幾乎總會涉及指標的算術運算,所以陣列和多型不要混用。

不要用多型方式處理陣列

基類中過載運算子 有乙個專用來處理基類物件的函式 如果對這個函式傳入的引數是單個物件,那麼通常情況下這個函式可以接收基類物件,也可以接收派生類物件,這是c 的多型特性決定的 但是如果這個函式處理的是物件陣列,因為指標算數表示式的工作原理,這個函式只能用來處理基類物件陣列,雖然在函式形式上也可以接收派...

不要用多型方式處理陣列以及陣列的析構

今天jackxu貼了一段 說有乙個奇怪的崩潰,希望一起看看,於是一研究了一下,如下,coredump崩潰的地方在delete,編譯器是gcc 4.1.2版本。同時在visual studio 上,這個沒有錯誤。崩潰前也沒有任何輸出。include class base class parent pu...

不要以分期付款的方式結婚

不要以分期付款的方式結婚 朋友,你找到自己的愛情了嗎?你的愛情禁得住考驗嗎?首先給大家幾個問題,你認真思考一下你的愛情。1 我們能不能同甘共苦,分享生命中的一切呢?我想自己快樂呢還是想使人快樂?這是對分享的考驗,當你計畫一件事時,你只顧自己喜歡做什麼,還是在揣想對方會喜歡什麼呢?正如一位德國作家歐賽...