在c++程序中,子类继承父类时定义了一个完全重名的函数,但父类中该函数没加vitural关键字,那么子类调用该函数时,是调用自己的函数还是父类的函数
时间: 2024-03-28 08:40:04 浏览: 68
在C++中子类继承和调用父类的构造函数方法
5星 · 资源好评率100%
如果在C++程序中,子类继承父类时定义了一个完全重名的函数,并且父类中该函数未声明为虚函数,那么当子类调用该函数时,会调用子类自己的函数,而不是父类的函数。
这是因为在C++中,函数的重载和函数的覆盖是不同的概念。当子类定义了与父类完全重名的函数时,它会隐藏父类的同名函数,即使它们的参数列表不同。而且,如果父类的函数未声明为虚函数,那么子类的同名函数不会覆盖父类的函数,而只是隐藏它。
如果想要在子类中覆盖父类的同名函数,需要在父类中将该函数声明为虚函数,然后在子类中使用override关键字重写该函数。这样,当子类调用该函数时,就会调用子类中的函数,而不是父类中的函数。
阅读全文