函数重载,函数重写(虚函数重写),函数重定义(非虚函数重写),以及名称覆盖(函数重定义时,与父类参数个数不同,或是参数类型不同)

函数重载:(注意,子类无法重载父类的函数)(类中,相同函数名,不同参数)

必须在同一个类中进行。

子类无法重载父类的函数,父类同名函数将被名称覆盖。

重载时在编译期间根据参数类型和个数决定函数调用。


函数重写(类间的虚函数,相同函数名及参数,也称为覆盖,):

必须发生于父类与子类之间

并且父类与子类中的函数必须有完全相同的原型

使用virtual声明之后能够产生多态(如果不加virtual ,则是重定义)


函数重定义(类间,相同函数名,参数可相同,也可不同,非虚函数,也称为隐藏)

如果在父类中定义一个函数(没有声明为虚函数),(原理上子类会继承父类的函数),如果子类中有相同函数名(参数个数或类型与父类不同),本来是相当于重载的,但因为子类无法重载父类的函数,所以此时会出现名称覆盖。即打算用子类对象调用父类的该函数时会出现编译器报错。

你可能感兴趣的:(C++语法学习)