(Apple *)pf->peel(); 
    则报错说
    ct.cpp: In function ‘int main()’:
ct.cpp:48: 错误:void 值未如预期地被忽略       

(peel函数我定义的返回值是void,这个报错是不是说明 (Apple *) 这个强转是执行完 pf->peel();  后才执行的? 他把 void强转为 (Apple *)? 如果是的话,这和我记忆中的 -> 和 ()的优先级及结合性不符啊)


后来改为:

  
    ((Apple *)pf)->peel(); 
就好使了,运行了子类的peel函数,我查了优先级, -> 和 ()是同级的啊,而且结合性是自作往右,那么  (Apple *)pf->peel();  该表达式中应该先执行 (Apple *)pf,为何
(Apple *)pf->peel();  会报错呢?

不是-> 和 (),而是-> 和 *比较,->优先级高

posted on 2013-10-20 20:03  Yogurshine  阅读(2671)  评论(0编辑  收藏  举报