C++语言中重写、重载和隐藏的概念及辨析
概念
重载:同一可访问区内,函数名相同,参数列表(类型、个数、顺序)不同,返回值类型无要求
隐藏:派生类的函数屏蔽了同名的基类函数。只要是同名函数,不管参数列表是否相同,基类函数都会被隐藏。
重写(覆盖):派生类与基类之间,函数名、参数列表、返回值类型必须相同,函数体可以不同,被重写的基类函数必须有virtual关键字修饰。
重写和重载的区别:
- 范围:对于类中函数的重写和重载而言,重载发生在同一个类的内部,重写发生在不同的类之间(父类与子类之间)
- 参数:重载只要求,函数名相同,参数列表不同,而对返回值类型无要求;重写,则要求函数名、参数列表、返回值类型必须相同,仅对函数体的内容无要求
- 关键字:对于被重写的基类函数,必须用
virtual关键字修饰;对于重载的函数,用不用virtual关键字修饰都可以
重写、重载和隐藏的区别:
- 范围:对于类中的成员函数而言,重载发生在同一类内,隐藏和重写发生在不同类间(父类与子类之间)
- 参数:重载只要求,函数名相同,参数列表不同,而对返回值类型无要求;重写,则要求函数名、参数列表、返回值类型必须相同,仅对函数体的内容无要求;隐藏只要求,函数名相同,而对参数列表和返回值类型无要求
- 关键字:对于父类和子类的同名函数,当他们的参数不同时,无论父类函数使用有
virtual关键字修饰,父类函数都是被隐藏,而非重写

浙公网安备 33010602011771号