重写重载隐藏
函数重载:发生在同一个函数中,参数列表或者返回值不同,同名函数
void Swap1(int* a, int* b);
void Swap2(float* a, float* b);
void Swap3(char* a, char* b);
void Swap4(double* a, double* b);
函数重写:发生在父子类间,同名函数,参数列表返回值完全相同。同时父类使用了virtual。此为多态。
//父类
class Person {
public:
void virtual Buy_Ticket() {
cout << "Person权限——全票购买" << endl;
}
};
//子类1:
class Student :public Person {
public:
void virtual Buy_Ticket() {
cout << "Student权限——半价购买" << endl;
}
};
//子类2:
class Soldier :public Person {
public:
void virtual Buy_Ticket() {
cout << "Soldier权限——优先购买" << endl;
}
};
函数覆盖:父子类间的同名函数,不管参数列表以及返回值,子类中会将父类的同名函数覆盖。
class A {
public:
void Sleep() {
cout << "睡好觉" << endl;
}
};
class B :public A {
public:
void Sleep(int a) {
a++;
cout << "睡长觉" << endl;
}
};
int main(){
A a;
B b;
a.sleep();
b.sleep(); //报错
b.A::sleep(); //正确
return 0;
}