#include<iostream>
using namespace std;
class A
{
public:
void hello(){cout<<"基类A的不带参数的hello函数\n";}
void hello(int i)
{
cout<<"基类A的带一个参数的hello函数";
cout<<"a.hello(i):"<<i<<"\n";
}
};
class B:public A
{
public:
void hello(){cout<<"子类B的不带参数的hello函数\n";}
void hello(int i)
{
cout<<"子类B的带参数的hello函数";
cout<<"b.hello(int i)"<<i<<endl;
}
void hello(int i)const
{
cout<<"子类B的带参数的const hello函数";
cout<<"b.hello(int i)"<<i<<endl;
}
};
void main()
{
A a;
B b;
const B b1;
a.hello();
a.hello(1);
b.hello();
b.hello(2);
b1.hello(3);
using namespace std;
class A
{
public:
void hello(){cout<<"基类A的不带参数的hello函数\n";}
void hello(int i)
{
cout<<"基类A的带一个参数的hello函数";
cout<<"a.hello(i):"<<i<<"\n";
}
};
class B:public A
{
public:
void hello(){cout<<"子类B的不带参数的hello函数\n";}
void hello(int i)
{
cout<<"子类B的带参数的hello函数";
cout<<"b.hello(int i)"<<i<<endl;
}
void hello(int i)const
{
cout<<"子类B的带参数的const hello函数";
cout<<"b.hello(int i)"<<i<<endl;
}
};
void main()
{
A a;
B b;
const B b1;
a.hello();
a.hello(1);
b.hello();
b.hello(2);
b1.hello(3);
}
当我们在子类中定义一个与基类同名的函数时,那么等于是告诉编译器,用子类的函数覆盖掉基类的同名函数,同时将它的重载函数隐藏起来。