(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(); 会报错呢?
不是-> 和 (),而是-> 和 *比较,->优先级高