SoYounga 2021-11-17 18:31 采纳率: 33.3%
浏览 9

关于c++基类指针指向派生,关于虚函数的一个问题

#include<iostream>
using namespace std;
class Tree{
public:
    virtual void fa(){cout<<"Tree:higher"<<endl;}
    virtual void fb(){cout<<"Tree:lower"<<endl;}
    virtual int fc(int m){ return 3*m; }
};
class Grass:public Tree{
public:
  //  void fa(){cout<<"Grass:wide"<<endl;}
    void fc(){cout<<"Grass:thin"<<endl;}
};
class Leaf:public Grass{  //b
public:
    void fa(){cout<<"Leaf:green"<<endl;}
    void fb(int i=0){cout<<"Leaf_age:"<<i<<endl;}
    int fc(int n=1){cout<<"Leaf_num="<<n<<endl;return 0;}
};
int main()
{
Grass a;
Leaf b;
Tree c,*p=&b;
b.fb(5);
p->fb();
/*a.fc();
p->fa();
p->fb();  //Tree:lower
b.fb(c.fc(6));
b.fc(p->fc(6));*/

return 1;
}

这是输出结果

 第二个p->fb()为什么输出基类里面的呢,我以为是Leaf_age:1

 

  • 写回答

1条回答 默认 最新

  • 真相重于对错 2021-11-17 20:41
    关注

    两个函数不一样,没有起到动态绑定的功能

    评论

报告相同问题?

问题事件

  • 创建了问题 11月17日