#include<bits/stdc++.h>
using namespace std;
class A
{
public:
void a()
{
cout<<"A->a"<<endl;
};
virtual void b(int i=10)
{
cout<<"A->b"<<" i="<<i<<endl;
};
};
class B:public A
{
public:
void a()
{
cout<<"B->a"<<endl;
};
virtual void b(int i=20)
{
cout<<"B->b"<<" i="<<i<<endl;
};
};
int main()
{
B *pB=new B();//pB的静态类型是它声明的类型B*,动态类型也是B* 注:B *pB=new B;也可以
A *pA=pB;//pA的静态类型是它声明的类型A*,动态类型是所指对象pB的类型B*
pB->a();
pB->b();
pA->a();
pA->b();
return 0;
}
/*
B->a
B->b i=20
A->a
B->b i=10
注:缺省参数一定要定义为相同,定义不相同输出参数为基类参数,不定义缺省参数的话是隐藏而不是重写(多态)
*/
using namespace std;
class A
{
public:
void a()
{
cout<<"A->a"<<endl;
};
virtual void b(int i=10)
{
cout<<"A->b"<<" i="<<i<<endl;
};
};
class B:public A
{
public:
void a()
{
cout<<"B->a"<<endl;
};
virtual void b(int i=20)
{
cout<<"B->b"<<" i="<<i<<endl;
};
};
int main()
{
B *pB=new B();//pB的静态类型是它声明的类型B*,动态类型也是B* 注:B *pB=new B;也可以
A *pA=pB;//pA的静态类型是它声明的类型A*,动态类型是所指对象pB的类型B*
pB->a();
pB->b();
pA->a();
pA->b();
return 0;
}
/*
B->a
B->b i=20
A->a
B->b i=10
注:缺省参数一定要定义为相同,定义不相同输出参数为基类参数,不定义缺省参数的话是隐藏而不是重写(多态)
*/