//============================================================================
// Name : prac0908virtualFunction.cpp
// Author : perfey
// Version :
// Copyright : Your copyright notice
// Description : practice virtual function and pure virtual function
//============================================================================
#include <iostream>
using namespace std;
//virtual function的实质就是用基类调用子类,在运行时再关联调用?
//存虚是基类为接口,子类必须实现基类;; 好比 动物》鸡鸭; 鸡》山鸡(一个是抽象概念无实体,一个既有抽象也代表某种
//常识的实体)
class chicken
{
public :
virtual void say()
{
cout << "咯咯咯! basic class"<<endl;
}
};
class farm: public chicken
{
public:
virtual void say()
{
cout <<" Mountion chicken:咯咯咯 咯咯咯!"<<endl;
}
};
class animal
{
public:
virtual void say() = 0; //纯需函数,animal只是一个接口,没有实体。没有什么物种叫,动物,只是抽象概念。
};
class smallChicken: public animal
{
public:
virtual void say()
{
cout << " 纯虚函数接口造出的类 :: 在叫"<<endl;
}
};
int main() {
chicken *c = new farm();//基类调用了子类方法
c->say();
chicken *c2 = new chicken(); //基类直接用了自己的方法
c2->say();
animal *a = new smallChicken();//利用接口调用子类,可以生成丰富特性。比如孙悟空72变,同一个接口分别调用鸡鸭鱼子类
a -> say();
return 0;
}
results:
Mountion chicken:咯咯咯 咯咯咯!
咯咯咯! basic class
纯虚函数接口造出的类 :: 在叫
本文通过代码实例介绍了C++中的虚函数和纯虚函数,阐述了它们在多态中的作用。基类`chicken`定义了虚函数`say()`,子类`farm`和`animal`分别重写此函数,展示了运行时多态性。同时,`animal`类定义了一个纯虚函数`say()`,作为接口让子类`smallChicken`实现。通过`main()`函数调用,展示了如何利用多态创建不同行为的对象。
424

被折叠的 条评论
为什么被折叠?



