1:以前沒有知道這個,全是public繼承
//作為public的子類指標可以轉化為基類指標,
//但是protected,private 繼承的子類指標不能轉化為基類指標。
//預設不加轉化情況
class s1 ;
class s2 : protected s1 //public s1 private s1
;void f(s1* v)
;void g(s2* c)
int main(int argc, char* argv)
;2: 這個 象 那個常量定義,在建構函式中還不是常量,在析構中類似。
q66:若基底類別的建構子呼叫乙個虛函式,為什麼衍生類別覆蓋掉的那個虛擬函
數卻不會被呼叫到?
在基底類別 base 的建構子執行過程中,該物件還不是屬於衍生 derived 的,所以
如果 "base::base()" 呼叫了虛函式 "virt()",則 "base::virt()" 會被呼叫,
即使真的有 "derived::virt()"。
類似的道理,當 base 的解構子執行時,該物件不再是個 derived 了,所以當
base::~base() 呼叫 "virt()",則 "base::virt()" 會被執行,而非覆蓋後的版本
"derived::virt()"。
當你想像到:如果 "derived::virt()" 碰得到 derived 類別的物件成員,會造成什
麼樣的災難,你很快就會看出這規則的明智之處。
******************************==
q67:衍生類別的解構子應該外顯地呼叫基底的解構子嗎?
不要,絕對不要外顯地呼叫解構子(「絕對不要」指的是「幾乎完全不要」)。
衍生類別的解構子(不管你是否明顯定義過)會「自動」去呼叫成員物件的、以及基
底類別之子物件的解構子。成員物件會以它們在類別中出現的相反順序解構,接下來
是基底類別的子物件,以它們出現在類別基底列表的相反順序解構之。
只有在極為特殊的情況下,你才應外顯地呼叫解構子,像是:解構乙個由「新放入的
new 運運算元」配置的物件。
4:建立二維陣列的巨集,沒有用過,都是用的vector簡單搞定了
發信人: zswolf2000 (少年壯志不言愁), 信區: cplusplus
標 題: [faq]如何用巨集生成動態二維陣列
發信站: bbs 水木清華站 (sun feb 16 22:07:45 2003), 站內
#define matrix_allocate(matrix, width, height, type)
#define matrix_delete(matrix, width, height)
用這兩個巨集
最近這兩天
最近這個兩天一直在和愛機作鬥爭,幸好都是人民內部矛盾,還沒有到不可調和的地步。其實怪我,想法太多 又想raid,又想server2008,見異思遷,三心二意,當然會讓愛機對我有意見。server 2008認得很順,格式化,拷貝檔案,安裝成功!然後當然是驅動了。server2008用vista的驅動,...
這兩天的想法
你太感性了 這是昨天和乙個老朋友 聊天時,她對我的評價。我的確很感性,以至於很多時候,我看那種比較感人的電影都會流淚。這沒有什麼不好,至少我這樣認為。我的煩惱是 雖然我是乙個很感性的人,可是在某些需要感性的時候,我卻表現得太理性。team裡乙個新來的mm對我說 咱們公司裡的女生,很多都自信得有點過頭...
這兩天的工作
這兩天是週末,一直在看關於arm和embedded system的書。tsinghua小杜的那本書實在是錯誤太多了。好象沒有經過任何的校對就拿來出版了。時不時就過來幾個莫名其妙就出來乙個暫存器得符號!我敢和你打賭絕對是他錯了,看來有必要在我得blog幫他出個勘誤表了。還有昨天晚上用了3個小時的時間來...