C++ 多继承,对不同基类的同名纯虚函数进行覆盖
例如classAA{public:virtualvoidabmethod()=0;}classBB{public:virtualvoidabmethod()=0;}cla...
例如
class AA
{
public:
virtual void abmethod() = 0;
}
class BB
{
public:
virtual void abmethod() = 0;
}
class CC : public AA , public BB
{
void abmethod()
{
std::cout << "abmethod of CC" << endl;
}
}
我的实测情况是 编译器会在BB类中的函数定义处提示错误
如何解决这样的情况呢? 展开
class AA
{
public:
virtual void abmethod() = 0;
}
class BB
{
public:
virtual void abmethod() = 0;
}
class CC : public AA , public BB
{
void abmethod()
{
std::cout << "abmethod of CC" << endl;
}
}
我的实测情况是 编译器会在BB类中的函数定义处提示错误
如何解决这样的情况呢? 展开
2个回答
展开全部
#include <iostream>
class AA
{
public:
virtual void abmethod(void) =0; // 声明纯虚函数
}; // 类的尾部需要有分号
class BB
{
public:
virtual void abmethod(void) =0;
}; // 同上
class CC:virtual public AA,virtual public BB // 将直接基类声明为虚基类
{
public: // 需要AA和BB的直接派生类CC中的纯虚函数声明为public,这样派生类外部方可访问它.
virtual void abmethod(void)
{
std::cout<<"abmethod of CC"<<std::endl;
}
}; // 同上
int main()
{
CC c,*p;
p=&c;
p->abmethod();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/*
abmethod of CC
Press any key to continue
*/
#include <iostream>
using namespace std;
class AA {
public :
virtual void abmethod() = 0;
};
class BB {
public :
virtual void abmethod() = 0;
};
class CC : public AA , public BB {
public :
void abmethod() {
std::cout << "abmethod of CC" << endl;
}
};
int main() {
CC c;
c.abmethod();
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询