当前位置:   article > 正文

如何用C语言实现C++的基本特性:封装、继承、多态_如何用c 实现 c++ 的面向对象特性(封装、继承、多态)

如何用c 实现 c++ 的面向对象特性(封装、继承、多态)

面向对象语言C++的基本特征是封装、继承、多态,其实这些用C语言同样可以实现。

封装可以用结构体来实现,继承可以用包含来实现,这些都好说,下面我用代码重点说一下如何用C语言实现C++的多态。

 

using namespace std;

typedef struct  Animal

{

 void (*show) ();

}CAnimal;

void showpig()

{

 cout<<__FUNCTION__<<endl;

}

void showbird()

{

 cout<<__FUNCTION__<<endl;

}

void showdog()

{

 cout<<__FUNCTION__<<endl;

}

int  main()

{

 CAnimal s1,s2,s3;

s1.show=showpig();

s2.show=showbird();

s3.show=showdog();

 

vector <CAnimal *> v;

v.push_back(&s1);

v.push_back(&s2);

v.push_back(&s3);

 

for(int i=0;i<v.size();i++)

{

 v[i]->show();

}

return i;

}

可以看到,v.push_back() 的参数就是一个结构体地址,这个结构体指向带有函数指针的结构,每个实例的函数指针都指向了不同的函数,但是调用者不用自己去区分传入的对象是什么,其内部也不用去判断对象的函数指针到底指向那个函数,这就是C++中的多态,但是这里没用做多动态绑定。

【转自】http://blog.csdn.net/yanook/article/details/6584624

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/392665
推荐阅读
相关标签
  

闽ICP备14008679号