作者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