何为重载、何为重写,又何为重定义呢?下面我将从C++实现的角度进行详细剖析,以及C++语言底层是如何实现重载、重写和重定义的。
一、重载
重载---同一个类中函数名相同,函数的参数列表不相同的两个及两个以上的函数就是函数重载。注意:函数的返回值不能作为函数是否重载的依据。如:类example中,函数a就是重载。
class example
{
public:
int a(int parameter1);
int a(int parameter1, char parameter2);
int a(double parameter1, char parameter2);
}
二、重写
重写---是在子类继承父类的时候,对父类的虚函数进行了覆盖。重写会使程序发生动态联编,产生多态。
如childern类的A函数相对于parent类的虚函数A就是重写。
class parent
{
public:
virtual int A(int parameter1)
{
cout << "I am parent" << endls;
}
}
class childern : public parent
{
int A(int paramenter)
{
cout << "I am childern" << endls;
}
}
三、重定义
重定义---是在子类继承父类的时候,对父类的非虚函数进行了覆盖。。
如childern类的A函数相对于parent类的非虚函数A就是重定义。
class parent
{
public:
int A(int parameter1)
{
cout << "I am parent" << endls;
}
}
class childern : public parent
{
int A(int paramenter)
{
cout << "I am childern" << endls;
}
}