首页 > 试题广场 >

请你说说重载,复写,隐藏的区别

[问答题]
请你说说重载,复写,隐藏的区别
重载:函数之间或一个类中的函数,函数名相同,参数列表不同,称为函数重载。 复写:子类重写父类的虚函数,函数名与参数列表都相同,函数体不同 隐藏:子类重新实现父类中的函数,调用时调用子类中的函数,函数名相同,参数列表也相同,函数体不同。
发表于 2023-08-15 17:28:10 回复(0)
重载:指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用函数,重载不关心函数返回类型。 隐藏:指派生类的函数屏蔽了与其同名的基类函数,注意只要是同名函数,不管参数列表是否相同,基类函数都会被隐藏。 重写(覆盖):指派生类中存在重新定义的函数,其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同,派生类调用时会调用派生类的重写函数,不会调用被重写函数。重写的基类中被重写的函数必须又virtual修饰。 重载和重写的区别: (1)范围区别:重写和被重写的函数在不同的类中,重载和被重载的函数在同一个类中。 (2)参数区别:重写和被重写的函数参数列表一定相同,重载和被重载的函数参数列表一定不同。 (3)virtual的区别:重写的基类必须要有virtual修饰,重载函数和被重载函数可以被virtual修饰,也可以没有。 隐藏和重写,重载的区别: (1)与重载范围不同:隐藏函数和被隐藏函数在不同类中。 (2)参数的区别:隐藏函数和被隐藏函数的参数列表可以相同,也可以不相同,但函数名一定相同;当参数不同时,无论基类中的函数是否virtual修饰,基类函数都是被隐藏,而不是被重写。
发表于 2022-09-13 10:24:04 回复(0)
重载:函数名相同,形参不同,同一作用域 隐藏:函数名相同,不同作用域 重写:函数名参数列表返回值相同,virtual修饰,继承关系
发表于 2022-07-26 11:48:08 回复(0)
1. 重载:重点是参数列表的修改,静态多态; 2. 复写:重点是虚函数的实现,动态多态; 3. 隐藏:自己起一个和基类函数同名的函数,把基类的函数隐藏起来。
发表于 2023-11-09 23:17:29 回复(0)
1. 重载:在同一作用域中,同名函数的形式参数(参数个数、类型或者顺序)不同时,构成函数重载,与返回值类型无关。 2. 隐藏:指不同作用域中定义的同名函数构成隐藏(不要求函数返回值和函数参数类型相同)。比如派生类成员函数隐藏与其同名的基类成员函数、类成员函数隐藏全局外部函数。 隐藏的实质是:在函数查找时,名字查找先于类型检查。如果派生类中成员和基类中的成员同名,就隐藏掉。编译器首先在相应作用域中查找函数,如果找到名字一样的则停止查找。 3. 派生类中与基类同返回值类型、同名和同参数的虚函数重定义,构成虚函数覆盖,也叫虚函数重写。
发表于 2024-05-21 09:44:07 回复(0)
重载指的是对普通函数的重载,它们的参数列表不一样(参数量、参数类型等,返回值不能区分);复写应该是继承了父类的virtual函数并重写了它;隐藏是指子类重新定义了父类里的一个普通成员函数,导致父类的成员被隐藏,对子类对象不可见
发表于 2024-03-28 15:53:55 回复(0)
题干写错了好像,重写打的复写
发表于 2023-01-31 18:31:43 回复(0)
隐藏的实质其实就是名字查找的优先级高于类型检查
发表于 2022-09-27 20:20:11 回复(0)
隐藏是指当派生类的对象指针、引用指向基类和派生类相同函数名的函数时,调用的是派生类的函数。
发表于 2022-09-08 10:43:41 回复(0)