一 、普通赋值 (同名隐藏)
子类对象调用和父类相同的函数名,该父类的函数名会被隐藏,只会调用子类的函数。
Class A
{
public:
void show();
void show(int);
}
Class B : public A
{
public :
void show();
void printf();
}
int main()
{
B b;
b.show();
a.show(); //这时候子类已经隐藏父类的方法,父类不能在调用自己的函数
a.show(0) //同上
}
父类的引用或指针被子类对象的对象或地址赋值后,它会调用父类自己相应的方法
二、子类对象地址给父类指针赋值
通过子类的对象的地址给父类的指针赋值----->父类指针只能调用子类中从父类继承的函数或者变量
int main()
{
A * a ;
B b;
a = &b;
a->show();
a->printf(); //这个是错误的调用,不能调用子类的函数方法
}
三 、子类对象给父类的引用赋值
父类的引用只能访问由子类继承父类的函数或者变量
int main()
{
A &a;
B b;
a = b;
a.show();
a.list(); //这个引用是错误的
}