#include <iostream>
using namespace std;
class employee{
public:
??? virtual void salary(){
?? ??? ?cout<<"employee salary"<<endl;
?? ?}
};
class programmer:public employee{
public:
?? ?void salary()
?? ?{
?? ?? cout<<"programmer salary"<<endl;
?? ?}
?? ?void bonus()
?? ?{
?? ??? cout<<"programmer bonus"<<endl;
?? ?}
};
void payroll(employee *pe)
{
?? programmer *pm=dynamic_cast<programmer*>(pe);
?? if(pe)
?? {
?? ??? pm->bonus();
?? }
?? else
?? {
?? ??? pe->salary();
?? }
}
int main()
{
?? employee *pe=new programmer;
?? payroll(pe);
}
在VC下運行,總是拋出異常。
project--> ? C/C++-->project ? option ? 加上/GR
靠RTTI實現的,不過VC默認情況下是關掉了RTTI的,因為RTTI會有運行時的消耗,
影響效率......