[问题] virtual function 请教

楼主: jono103 (不说对不起)   2015-07-17 11:42:48
请教各位大大
根据
http://openhome.cc/Gossip/CppGossip/VirtualFunction.html
第13行
注意将衍生类别型态的指标指向基底类别的物件基本是不可行的(虽然可以使用型态转换
的方式来勉强达成,但并不鼓励),衍生类别的指标并不能存取基底类别的 成员。
可以举个简单的例子吗?
尤其是"衍生类别的指标并不能存取基底类别的 成员"
我的想法如下:
class car {
public:
virtual void move() { cout << "car move"<<endl;}
} ;
class Benz: public car {
public:
void move() { cout << "Benz move"<<endl;}
} ;
int main(int argc, char* argv[])
{
car c ;
Benz &rB=(Benz &)c;
rB.move();//输出 car move, 可以存取基底类别的 成员,
//是我搞错他的意思吗? 请赐教 ,谢谢。
return 0;
}
作者: uranusjr (←這人是超級笨蛋)   2015-07-17 14:21:00
感觉是写错了, 他应该是想说不能存取 Benz::move
作者: Feis (永远睡不着 @@)   2015-07-17 16:13:00
1. 这是 static_cast 或 dynamic_cast, 是否保证安全 ?2. 这边恰巧是 virtual function. 你要把衍生成员拿掉至于他的说法我也是不太懂他想表达的而且就 C++ 各种无敌大绝应该是没有不能存取这回事 XD我又重看了一次原文. 他应该是指没有 virtual 的状况也就是这个例子让 move 不是 virtual function
作者: AndyLeo (打败超越一切的人)   2015-07-17 16:35:00
是宣告Benz b; Car &c = b;这样才是你想要练习的吧
楼主: jono103 (不说对不起)   2015-07-17 21:12:00
To A:是的,练习完那个后,发现它那句话怪怪的,好奇一下To F:所以它那是指在没有virtual的情况下,衍生类别的别的指标并不能存取基底类别的 成员。了解! 谢谢各位
作者: azureblaze (AzureBlaze)   2015-07-17 23:34:00
我觉得他想表达的是 http://ideone.com/oyfWty ?

Links booklink

Contact Us: admin [ a t ] ucptt.com