[問題] class 的object

看板C_and_CPP作者 (追夢)時間16年前 (2009/11/10 12:46), 編輯推噓3(3010)
留言13則, 4人參與, 最新討論串1/2 (看更多)
[問題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

11/10 12:49, , 1F
[Q1] 物件存放的位置不同
11/10 12:49, 1F

11/10 12:50, , 2F
[Q1] 都會call "destructor"
11/10 12:50, 2F
※ 編輯: Dreamer77 來自: 69.142.115.249 (11/10 12:52)

11/10 12:53, , 3F
[Q2] 萬一有 class C :public A , A* a就可以通吃
11/10 12:53, 3F

11/10 12:54, , 4F
[Q1] 第二種call destructor是在離開function的時候對吧
11/10 12:54, 4F

11/10 12:55, , 5F
應該說是離開該scope的時候, 不一定要是function
11/10 12:55, 5F

11/10 12:56, , 6F
[Q2] 但也可以宣告C* c呀 不懂A* a 通吃的好處是什麼耶?
11/10 12:56, 6F

11/10 12:58, , 7F
為了多型
11/10 12:58, 7F

11/10 13:37, , 8F
但是不是也可以用template做到一樣的事情
11/10 13:37, 8F

11/10 13:39, , 9F
我只要為了A寫就可以通吃ABC
11/10 13:39, 9F

11/10 13:40, , 10F
template 不一定能保證你對某人寫用在其他人身上會不會出事
11/10 13:40, 10F

11/10 13:51, , 11F
但如果BC有不相同的member多型和template一樣都出事吧!?
11/10 13:51, 11F

11/10 17:52, , 12F
template只能作到靜態多型,也就是compile time你就要知
11/10 17:52, 12F

11/10 17:53, , 13F
道型別,而不能在run time根據型別才來決定行為
11/10 17:53, 13F
文章代碼(AID): #1A-F0usu (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A-F0usu (C_and_CPP)