推 sammsiontir: 因為print1沒有virtual所以test會呼叫A的print1 02/04 16:46
→ sammsiontir: 呼叫objB.print1 才會是B1 02/04 16:47
→ sammsiontir: 建議你去搞清楚virtual的用法,就會了解輸出是A1 02/04 16:48
→ ArcherState: 所以當我呼叫test()時,test()裏頭呼叫的方法是呼叫b 02/04 16:49
→ ArcherState: ase的? 02/04 16:49
→ sammsiontir: 除非你定義virtual,不然都會呼叫base的 02/04 16:54
→ ArcherState: 謝謝,請問一下第二個問題有解決的辦法嗎? 02/04 17:08
→ taies: B():A(){ //balabala } A是base B繼承A 這樣? 02/04 23:42
推 LPH66: 樓上正解, 如果要帶參數也是在這裡帶 02/04 23:55
→ LPH66: 例如 Derived(int x): Base(x) {//...} 02/04 23:56
對,我想說明的就是樓上的這種寫法,可是這種寫法必須在宣告Derived的constructor時就已經
將他的實作也寫好,也就是必須在.h檔中就寫好constructor的實作,請問有辦法分離到
另一個Derived.cpp檔中嗎?
※ 編輯: ArcherState (118.171.26.244), 02/05/2016 13:56:01
推 IKAFIRE: 上面的寫法為何不能放在cpp檔 02/05 14:07
→ ArcherState: 可以寫在cpp中,可是這樣這樣子在h檔要怎麼宣告? 02/05 14:39
→ taies: 跟一般建構子的宣告一樣 02/05 16:15
推 LPH66: 這個寫法是定義的一部份, 所以跟著定義走 02/05 23:22
→ LPH66: 宣告就照普通的方式宣告即可 02/05 23:22
→ ArcherState: 現在沒有電腦可以測試,明天試試看 02/06 00:12