Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以参数作为类指针的虚拟函数_C++_Overriding_Virtual Functions - Fatal编程技术网

C++ 以参数作为类指针的虚拟函数

C++ 以参数作为类指针的虚拟函数,c++,overriding,virtual-functions,C++,Overriding,Virtual Functions,我无法理解为什么我会得到该o/p。这不是因为参数的类型不同 如果某个成员函数vf在类库中声明为虚函数,并且 直接或间接从中派生的某个类 基,具有成员函数的声明 Class A Class A 那么派生类中的此函数也是虚函数(无论 在其声明中未使用关键字virtual)和重写 Base::vf(无论是否在其 声明) 使用可以帮助您在编译时找到错误 指定一个虚拟函数重写另一个虚拟函数 在成员函数声明或定义中,override可确保函数是虚拟的,并从基类重写虚拟函数。如果这不是真的,则程序格式错误(

我无法理解为什么我会得到该o/p。

这不是因为参数的类型不同

如果某个成员函数vf在类库中声明为虚函数,并且 直接或间接从中派生的某个类 基,具有成员函数的声明

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;
             }
};