首先看重载的定义,重载应该是三个之中学的最早的一个概念。
重载:
1.前提是必须在同一个类中进行,(子类无法重载父类的函数 ,因为父类同名函数将被名称覆盖)
2.函数名相同,函数的参数个数、参数类型或参数顺序三者中必须至少有一种不同。
3.如果仅仅是返回值不同,其他都相同,是无法构成重载的,希望大家不要踩坑
4. 重载是编译期间根据函数类型和个数决定函数的调用。
举例如下
class A
{
public:
void print(int a, int b)
{
cout << a << b << endl;
}
void print(int a)
{
cout << a<<endl;
}
protected:
private:
int a;
};
重写:必须发生在父类和子类之间,而且父类和子类中的函数必须有完全相同的函数原型,
当使用virtual声明之后能够产生多态。
class A
{
public:
virtual void print(int a)
{
cout << a<<endl;
}
protected:
private:
int a;
};
class B:public A
{
public:
virtual void print(int a)
{
cout << "hello"<<a << endl;
}
protected:
private:
}
重定义:重定义的概念和重写一样,只不过