首先,
(cb)pa->fun();
应该为
((cb*)pa)->fun();
注意pa外的第二层括号,->的级别优先于type castor其次,这样代码虽然可以工作,却是一种不好的编程风格
一般的,只允许upcast,即将派生类指针cast成基类指针,而downcast,即将基类指针cast成派生类指针是危险的,这样可能会造成access violation
(cb)pa->fun();
应该为
((cb*)pa)->fun();
注意pa外的第二层括号,->的级别优先于type castor其次,这样代码虽然可以工作,却是一种不好的编程风格
一般的,只允许upcast,即将派生类指针cast成基类指针,而downcast,即将基类指针cast成派生类指针是危险的,这样可能会造成access violation
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货