小编Avi*_*jee的帖子

C++中的虚函数

在我的C++程序中:

#include<iostream.h>

class A
{
    public:
    virtual void func()
    {
         cout<<"In A"<<endl;
    }
};

class B:public A
{
    public:
    void func()
    {
        cout<<"In B"<<endl;
    }
};

class C:public B
{
    public:
    void func()
    { 
        cout<<"In C"<<endl;
    }
};  

int main()
{
    B *ptr=new C;
    ptr->func();
}
Run Code Online (Sandbox Code Playgroud)

声明应该致电B::func().但是,该函数C::func()被称为.请详细说明一下.一旦在'A类'中删除了虚拟关键字,就不会再发生这种情况了.

c++ virtual-functions

3
推荐指数
1
解决办法
385
查看次数

纯虚函数

在C++程序中:

              #include<iostream.h>
              class A
              {
                     public: virtual void func()=0;
              };
              class B:public A
              {
                     public: void show()
                             {
                                   func();
                             }
              };
              void B::func()
              {
                      cout<<"In B"<<endl;
              }
              int main()
              {
                   B b;
                   b.show();
              } 
Run Code Online (Sandbox Code Playgroud)

如果在类B的主体内重新定义了虚函数func(),则没有错误.但是在使用范围解析运算符时,编译器会抛出错误.这是为什么?

c++ virtual-functions

1
推荐指数
1
解决办法
355
查看次数

标签 统计

c++ ×2

virtual-functions ×2