首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-11-10 
c++抽象类的多重继承问题IBase,CA和CB关系如下,如果我想在CB中重写f1(),在CB的对象调用f1时,调用的CB中的f

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

热点排行