重写:对父类的同名虚函数进行重定义,有多态的效果
重载:方法或者类中的成员方法定义的时候,方法名相同,参数不同,参数顺序不同;未实现多态
重定义:对父类同名方法进行重新定义,未实现多态
class Parent
{
public:
Parent(int a, int b):A(a),B(b)
{
}
int A;
int B;
void Print()
{
cout << "A " << A << endl;
cout << "B " << B << endl;
}
//重载,未实现多态
void Print(string name)
{
cout << "Name is " << name << endl;
}
virtual void Show()
{
cout << "Parent Show Something" << endl;
}
};
class Child : public Parent
{
public:
Child(int a, int b, int c) :Parent(a,b)
{
this->C = c;
}
int C;
//重定义父类,未实现多态
void Print()
{
cout << "A " << A << endl;
cout << "B " << B << endl;
cout << "C " << C << endl;
}
//重写父类函数,实现了多态效果
void Show() override//override 可写 可不写
{
cout << "Child Show Something" << endl;
}
};