作者vuluy (伏卢)
看板EE_DSnP
标题Re: [问题] 用Vector存地址
时间Sat Dec 17 14:58:12 2011
※ 引述《ric2k1 (Ric)》之铭言:
: 不好意思,之前眼残没有看清楚...
: 其实比较好的做法是写成:
: CirGate* Gate1 = new AI_GATE;
: ...
: 虽然原来你那样写 push_back 之後也是一样啦!
: 所以说请用 CirGate* Gate2 = _Index[n];
: 这样才能有 polymorphism.
我想请问一下
1.
AI_GATE* Gate2 = _Index[n];产生的error
是不是因为把CirGate* assign到AI_GATE*呢
如果是的话,是不是
可以把AI_GATE* assign给CirGate*
却不能把CirGate* assign给AI_GATE* (就算骨子里是AI_GATE*)
另外
2.
AI_GATE* Gate = new AI_GATE;
CirGate* Gate1 = new AI_GATE;
两者的用法一样吗
还是这样Gate就无法执行在base class中却未在AI_GATE中被定义的function呢
: 请不要 CirGate* Gate1 = new CirGate; 哦!!
3.
请问为什麽不能new CirGate
如果里面没有pure virtual function也不行吗
: 应该不会有 CirGate 的 object, 而是 AI_GATE, PI_GATE 等等,
: 所以可以把 CirGate 里头的 virtual function 宣告成 pure virtual (i.e. = 0)
: 如果有些 inherited class 的 function 没有定义,
: base class 的 virtual function 就不能是 pure virtual,
: 宣告成空的 { } 也可以,但看你实际的意义。
发现自己对inheritance还是非常不了解
以上3个问题忘记老师有没有讲过了
不知道猜想的对不对
感谢回答
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.249.129
1F:→ e124553423:母class的指标可以接继承那个的class的物件 12/17 19:44
2F:→ e124553423:反过来则不行 12/17 19:44
3F:→ e124553423:如果要用继承产生的class的member function 12/17 19:45
4F:→ e124553423:就要在母class里面先宣告成virtual 12/17 19:45
5F:→ e124553423:cirGate里面如果有pure virtual function 12/17 19:46
6F:→ e124553423:就不能生成物件,因为那个class还没定义完全 12/17 19:47
7F:→ e124553423:当然如果用CirGate*接new CirGate 12/17 19:47
8F:→ e124553423:只要CirGate里面没有pure virtual funtion 12/17 19:48
9F:→ e124553423:而且其他东西都有定义好 compile就不会有问题 12/17 19:48