重载、同名以及重写

tech2024-10-25  24

重载概念: 重载就是在同一作用域中,函数的名字相同,但参数列表不同,参数列表不同体现在,参数的名字、参数的类型、类型的次序,与函数返回值类型是否相同无关

同名隐藏和重写: 相同点:都是在继承体系中 不同点:

同名隐藏可以是函数名相同,也可以是成员变量名相同;但是重写只能是函数名相同对成员的要求不一样,重写对于成员的要求比较严格:对于重写来说,要求基类函数必须是虚函数,而同名隐藏不要求;其次对于函数原型来说:同名隐藏只要求基类和子类的函数名一样,而对于重写来说必须要求基类和子类的函数原型一致可以进行举例区分 对于基类:void test() 子类:void test() 如果函数原型一致,基类为虚函数,则为重写 如果函数原型一致,基类不是虚函数,则为同名隐藏 如果函数原型一致,基类不是虚函数,子类函数为虚函数,则为同名隐藏 如果函数名字一致,参数列表一致,且基类函数为虚函数,则有可能有虚函数也有可能为同名隐藏,具体看函数的返回值类型,如果基类返回的是基类对象的指针或引用,子类返回的是子类对象的指针或者引用,则就构成协变,也为重写,反之则为同名隐藏
最新回复(0)