读书人

c++抽象类的多重继承有关问题

发布时间: 2012-11-10 10:48:51 作者: rapoo

c++抽象类的多重继承问题
IBase,CA和CB关系如下,如果我想在CB中重写f1(),在CB的对象调用f1时,调用的CB中的f1而不是CA中的。是不是就应该像下面中的继承关系呢??

#include <iostream>

using namespace std;

#include <iostream>
using namespace std;

class IBase
{
public:
virtual void f1() = 0;
};

class CA : public IBase
{
public:
virtual void f1()
{
cout < < "CA::f1() " < < endl;
}
};

class CB : public CA
{
public:
virtual void f1()
{
CA::f1();
//cout < < "CB::f1() " < < endl;
}
void f2()
{
CA::f1();
}
};
为什么我用CB的对象调用f1却是CA中的f1呢???

[解决办法]

C/C++ code
class IBase  {  public:      virtual void f1() = 0;  };  class CA : public IBase  {  public:      virtual void f1()      {          cout << "CA::f1() " << endl;      }  };  class CB : public CA  {  public:      virtual void f1()      {          //CA::f1();//你在此处显示调用了CA的f1而且下面那句你注释掉了,所以看起来是执行了CA的f1其实不是        cout << "CB::f1() " << endl;      }      void f2()      {          CA::f1();      }  };int _tmain(int argc, _TCHAR* argv[]){        CB cb;    cb.f1();    system("pause");    return 0;} 

读书人网 >C++

热点推荐