虚函数学习理解
多态建立在虚函数的基础上,多态只是涉及到用父类型声明的子类型实例,在调用虚函数时呈现出的多态性,对于用子类型申明的自己实例,不涉及多态性,下面的代码很好的演示了这点:
include <iostream>
using namespace std;
class A{
public:
virtual void p(){
cout<<"is A"<< endl;
}
};
class B :public A{
public
virtual void p(){
cout<<"is B"<< endl;
}
};
int main()
{
//cout << "Hello World!" << endl;
A *aa = new A;
A *ab = new B;
B *bb = new B;
aa->p();
//声明为虚函数 输出为:is A
//非虚函数输出为: is A
ab->p();
//声明为虚函数 输出为:is B
//非虚函数输出为: is A
bb->p();
//声明为虚函数 输出为:is B
//非虚函数输出为: is B
return 0;
}