作者Dreamer77 (追夢)
站內C_and_CPP
標題[問題] class 的object
時間Tue Nov 10 12:46:46 2009
[問題1]
想請問有一個class A
宣告出一個物件a 用下列兩種方式的差別是什模呢
A *a = new A();
和
A a;
第二種的話 destructor 是不是就派不上用場了?
我觀念不太清楚 根各位請教一下 謝謝
[問題2]
如果B繼承A
書上總是舉這個例子
A *a = new A();
A *b = new B();
用於解釋memeber function 會如何被呼叫 以及virtual的相關問題
但我不理解的是為什麼不宣告成
B *b = new B();
宣告成A *b = new B(); 相較起來會有什麼用途嗎
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 69.142.115.249
1F:→ dendrobium:[Q1] 物件存放的位置不同 11/10 12:49
2F:→ dendrobium:[Q1] 都會call "destructor" 11/10 12:50
※ 編輯: Dreamer77 來自: 69.142.115.249 (11/10 12:52)
3F:→ dendrobium:[Q2] 萬一有 class C :public A , A* a就可以通吃 11/10 12:53
4F:→ Dreamer77:[Q1] 第二種call destructor是在離開function的時候對吧 11/10 12:54
5F:→ dendrobium:應該說是離開該scope的時候, 不一定要是function 11/10 12:55
6F:→ Dreamer77:[Q2] 但也可以宣告C* c呀 不懂A* a 通吃的好處是什麼耶? 11/10 12:56
7F:推 dendrobium:為了多型 11/10 12:58
8F:→ Dreamer77:但是不是也可以用template做到一樣的事情 11/10 13:37
9F:推 LPH66:我只要為了A寫就可以通吃ABC 11/10 13:39
10F:→ LPH66:template 不一定能保證你對某人寫用在其他人身上會不會出事 11/10 13:40
11F:→ Dreamer77:但如果BC有不相同的member多型和template一樣都出事吧!? 11/10 13:51
12F:推 holymars:template只能作到靜態多型,也就是compile time你就要知 11/10 17:52
13F:→ holymars:道型別,而不能在run time根據型別才來決定行為 11/10 17:53