作者Eventis (何逸凡)
看板OOAD
标题Re: [问题] 关於物件导向观念的问题
时间Tue Apr 1 07:41:13 2008
※ 引述《awes6380 (明智)》之铭言:
: 一个子类别C里定义了一个跟父类别S里名称一样的function f()
: 此时有一个物件o定义如下:
: C o=new C();
: S p=o;
: 此时p.f()和o.f()指的是同一个function,这种观念称为?
只是路过看到,我想或许题目的意思是:
S 是一个有完整定义的class
C 继承 S , 并且override f
至於那段程式码,指的只是类似下面这段code中,o和a的关系@@;;;;
(但是我想原来这段code应该是Java,
因为那个assign用c++可以做的肮脏事太多了XD)
不过说这题在选项前的那个叙述,目的应该是想把情况限制在override
如果没有E的话,当然答案是很好选啦.
可是因为有E,反向思考的话,要让p.f()跟o.f()指的是同一个function,
也不见得只有override这一种状况.
(这是找老师讨分数的讲法.....XD)
#include <iostream>
using namespace std;
class A {public: virtual void foo() {cout << "a.foo" << endl;}};
class B : public A {public: void foo() {cout << "b.foo" << endl;}};
main() {
B* o = new B();
A* a = o;
A* aa = new A();
o->foo();
a->foo();
aa->foo();
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.64.152.7
※ 编辑: Eventis 来自: 61.64.152.7 (04/01 07:57)
1F:推 freesamael:这程式有memory leak XD (逃~~) 04/01 08:16
2F:→ Eventis:反正....就结束啦XD 04/02 02:30
3F:→ Eventis:想说程式结束应该都会被捡回去,就懒得清了XD 04/02 02:34