C++中强制类型转换的应用(第一次)
程序员文章站
2022-06-15 18:19:30
1.派生类作为实参赋给父类形参 一般的父类只继承子类*同的部分,子类的新方法会被自动忽略而父类也就无法调用子类的新方法了。 问题:用父类的形参来访问子类的新方法。 强制类型转换(这个可能会有风险,但是编译器不报错) class Animal{ public: void Live(){ cout<< ......
1.派生类作为实参赋给父类形参
一般的父类只继承子类*同的部分,子类的新方法会被自动忽略而父类也就无法调用子类的新方法了。
问题:用父类的形参来访问子类的新方法。
强制类型转换(这个可能会有风险,但是编译器不报错)
class animal{
public:
void live(){
cout<<" living "<<endl;
}
};
class dog : public animal{
public:
void jump(){
cout<<" jump "<<endl;
}
};
animal * b = new dog;
((animal* )b) -> jump(); //ok, 强制转化
如果父类指针指向子类对象,需要把父类的指针转化为指向子类对象的指针,来访问子类扩展成员这就是所谓的向下转。
但是,向下转型是危险的,因为父类指针有可能没有指向子类对象。//这样试过,编译器是不报错的,但是按道理是不好这样强转了。
//dog没有继承animal
这样测试下来就是不报错。