嵌套类,纯虚函数,类继承,函数实现,运行时多态,感谢网友帮忙,虽然很简单,希望能帮到初学者及不熟悉语法的人!从简单开始~~
A类中嵌套B类,C类实现对B类的继承,并实现B类中的纯虚函数,主函数进行调用,实现多态。
该代码编译通过
#include "stdio.h"
class
A //A类中嵌套B类 因为B中有纯虚函数
virtual
void
operate()=0;
,所以A,B都是抽象类
{
public
:
class
B
{
public
:
virtual
void
operate()=0; //嵌套类中存在纯虚函数
};
public
:
B* GetB() {
return
m_b;
}
void
SetB(B* b) {
m_b = b;
}
private
:
B* m_b;
};
class
C :
public
A::B //类C可以直接继承嵌套类 A::B
{
public
:
void
operate();
//这里继承父类的operate不用写成void A::B::operate(); 当时不清楚,所以用错
};
void
C::operate()
//operate实现部分,如果不实现,C类也是抽象类
{
printf
(
"C 实现虚函数 operate()后的输出\n"
);
}
int
main()
{
A a;
a.SetB(
new
C()); //
new
C()
获取子类C*对象,SetB
()内部转化为B*对象
A::B *b = a.GetB();
b->operate(); //程序运行时多态性,选择C类operate() 也可以多个类继承A::B,
return
0; //比如D类实现operate()函数试验,a.SetB(new D()); 则运行时多态会选择D类的operate()
}