1.派生类作为实参赋给父类形参
在子类对象作为实参赋给父类类型的形参时,该父类的成员函数由于被子类继承所以可以通过父类形参调用共有方法,而子类的新方法会被自动忽略而父类也就无法调用子类的新方法了。
//这之前表述有问题
问题:用父类的形参来访问子类的新方法。
强制类型转换(这个可能会有风险,但是编译器不报错)
class Animal{
public:
void Live(){
cout<<" Living "<<endl;
}
};
class Dog : public Animal{
public:
void Jump(){
cout<<" Jump "<<endl;
}
};
class Cat : public Animal{
public:
};
Animal * b = new Cat;
((Dog* )b) -> Jump(); //ok, 强制转化
补充:如果父类指针指向子类对象,需要把父类的指针转化为指向子类对象的指针,来访问子类扩展成员这就是所谓的向下转。
但是,向下转型是危险的,因为父类指针有可能没有指向子类对象。//这样试过,编译器是不报错的,但是按道理是不好这样强转了。
//Dog没有继承Animal
这样测试下来就是不报错。
原文链接: https://www.cnblogs.com/SDcgy/p/12791424.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/344921
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!