隐藏和isa :进化返祖以及白马非马(c++)

Pre:Soldier是Person的子类

一、概念了解

隐藏:子类的某些函数与父类的某些函数重名,此时子类继承了父类的函数,此时可以通过特殊的手段访问父类该函数,这种特性被称为隐藏


Isa:父类可以被子类初始化,但是子类不可以被父类初始化(这就是IsA特性)即solider是person但是person不一定是Solider


二、用例子展现特性

隐藏的方式:(类似于OC的继承)
隐藏的特性存在后,如果子类的成员函数和父类的成员函数只有参数的不同,在逻辑上不能形成重载关系(函数名相同,但是参数个数和排列顺序不同,从这里可以看出,父子之间不是重载,而是隐藏),必须使用::来访问父类

Int test(void){
    Soldier soldier;
    soldier.play();
    soldier.Person::play();
    return 0;
}

Isa的方式:(类似于OC的多态,子类可以在父类的基础上扩充,具有独特性,白马非马)
int test(void){
    
    Soldier s1;
    Person p1 = s1;
    Person *p2 = &s1;

    // 以下是错误的
     S1 =  p1;
    Solider *s2 = &p1;
    return 0;     



}








猜你喜欢

转载自blog.csdn.net/dangbai01_/article/details/80996504
isa
今日推荐