C++ 以参数作为类指针的虚拟函数
我无法理解为什么我会得到该o/p。这不是因为参数的类型不同 如果某个成员函数vf在类库中声明为虚函数,并且 直接或间接从中派生的某个类 基,具有成员函数的声明C++ 以参数作为类指针的虚拟函数,c++,overriding,virtual-functions,C++,Overriding,Virtual Functions,我无法理解为什么我会得到该o/p。这不是因为参数的类型不同 如果某个成员函数vf在类库中声明为虚函数,并且 直接或间接从中派生的某个类 基,具有成员函数的声明 Class A Class A 那么派生类中的此函数也是虚函数(无论 在其声明中未使用关键字virtual)和重写 Base::vf(无论是否在其 声明) 使用可以帮助您在编译时找到错误 指定一个虚拟函数重写另一个虚拟函数 在成员函数声明或定义中,override可确保函数是虚拟的,并从基类重写虚拟函数。如果这不是真的,则程序格式错误(
Class A
Class A
那么派生类中的此函数也是虚函数(无论
在其声明中未使用关键字virtual)和重写
Base::vf(无论是否在其
声明)
使用可以帮助您在编译时找到错误
指定一个虚拟函数重写另一个虚拟函数
在成员函数声明或定义中,override可确保函数是虚拟的,并从基类重写虚拟函数。如果这不是真的,则程序格式错误(生成编译时错误)
B类:公共A类
{
公众:
无效显示A(B*objb)覆盖
// ^^^^^^^^
{
cout当通过A*调用display\u A时,会调用A或B的虚拟函数或A的非虚拟函数。由于原型不同,唯一符合此条件的函数是A::display\u A。无论如何,您可能会重新考虑设计。您使用一个对象显示方法来显示另一个对象。如果对象使用eir要显示的自己的显示方法(在这种情况下,不需要将指针作为参数显式传递)?可能重复的?请您进一步解释覆盖?@VaradMahashabde您的意思是?链接页面非常适合参考。
Class A
Class A
name
parameter type list (but not the return type)
cv-qualifiers
ref-qualifiers
class B:public A
{
public:
void display_A(B* objb) override
// ^^^^^^^^
{
cout<<"Class B"<<endl;
}
};