class A{
int a;
public:
virtual void show()=0;
//void show(){
// cout<<"父类show"<<endl;
// }
void out(){
cout<<"父类输出"<<endl;
}
};
class B :public A{
int b;
public:
void show(){
cout<<"显示子类"<<endl;
}
void out(){
cout<<"子类输出"<<endl;
}
};
void show(A&s){
s.show();//调用的是子类的方法
s.out();//原意是调用子类的方法,结果显示调用的是父类的方法,那s是不是父类的实例化?
}
int main()
{
// A a;//抽象类不能建立对象
B b;
show(b);
b.out();
B b2;
//A *ap;
A &ap=b2;
// ap=b2;
ap.out();
system("pause");
}
多态的特征:
父类的指针可以指向子类的对象
通过父类指针只能调用父类中声明的方法
通过指针调用函数的时候,若函数是个虚函数,表现出来的行为是对象自身的行为
产生多态:(1)指针
(2)引用
父类的引用可以引用一个子类对象
通过父类引用只能调用父类函数
调用一个父类被覆盖了的,虚函数,能调用子类的函数
还是java的多态更好理解