C++中重载和重写的方法区别(面试题)
2017-03-28 11:16
197 查看
重载,简单的说,就是函数或者方法又相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间相互称之为重载函数或者方法。
重写,又称为方法覆盖,子类可以继承父类的方法,而不需要重新编写相同的方法。但是有时候子类并不想原封不动的继承父类的方法而是做了一个修改,需要重写。
区别:
方法的重写和重载是C++多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性 的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法 被重写 (方法覆盖)。子类的对象使用这个方法时,将调用子类中的定义,对它而 言,父类中的定义如同被“屏蔽”了,而且如果子类的方法名和参数类型和个数都和 父类相同,那么子类的返回值类型必须和父类的相同;如果在一个类中定义了多个同 名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载 。
重写必须继承,重载不用。
重写的方法名,参数数目相同,参数类型兼容,重载的方法名相同,参数列表不同。
重写,又称为方法覆盖,子类可以继承父类的方法,而不需要重新编写相同的方法。但是有时候子类并不想原封不动的继承父类的方法而是做了一个修改,需要重写。
区别:
方法的重写和重载是C++多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性 的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法 被重写 (方法覆盖)。子类的对象使用这个方法时,将调用子类中的定义,对它而 言,父类中的定义如同被“屏蔽”了,而且如果子类的方法名和参数类型和个数都和 父类相同,那么子类的返回值类型必须和父类的相同;如果在一个类中定义了多个同 名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载 。
重写必须继承,重载不用。
重写的方法名,参数数目相同,参数类型兼容,重载的方法名相同,参数列表不同。
相关文章推荐
- 方法重载和方法重写的区别(转载)
- java中方法的重载与重写的区别
- C++ 重写重载重定义区别
- java中方法的重载与重写的区别
- C++ 重写重载重定义区别
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- java学习中重写与重载方法的区别(转自:小鸟的天空)
- java语言中方法重载overloading和方法重写(覆写)overriding的区别
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- java重载方法和重写方法之间的区别
- 【经典】C#中隐藏(new)、方法重写(override)、重载(overload)的区别
- C++中重写(override)与重载(overload)的区别
- java学习中重写与重载方法的区别(转自:小鸟的天空)
- 方法重写和重载的区别
- 隐藏(new)和方法重写(override)和重载(overload)的区别
- C#基础篇 重写与重载,以及其中设计的虚方法和抽象方法的使用和区别
- C#基础篇 重写与重载,以及其中设计的虚方法和抽象方法的使用和区别
- JAVA方法重载与重写的区别
- java中方法的重载与重写的区别
- java中方法的重载与重写的区别