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呢???
[解决办法]
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;}