当前位置: 首页 > news >正文

南昌网站建设方案详细版吉林省交通建设质量监督站网站

南昌网站建设方案详细版,吉林省交通建设质量监督站网站,深圳市科技网站开发,赤峰市做网站本文参考#xff1a; c语言面向对象之封装c面向对象之继承Linux源码分析之多态 一、封装 封装的本质就是将数据和方法集中到一个对象中#xff0c;c或者java使用的是class来实现。c语言中可以使用struct来实现同样的功能。比如下面的程序#xff1a; struct student {int…本文参考 c语言面向对象之封装c面向对象之继承Linux源码分析之多态 一、封装 封装的本质就是将数据和方法集中到一个对象中c或者java使用的是class来实现。c语言中可以使用struct来实现同样的功能。比如下面的程序 struct student {int age;char *name;void (*read)(char *); };void read_book(char *book) {printf(book is :%s, book); }int main(void) {struct student s1;s1.age 10;s1.name strdup(xiaoming);s1.read read_book;printf(name: %s age: %d\n, s1.name, s1.age);s1.read(math);free(s1.name)return 0; }二、继承 继承可以让子类使用父类的资源减少重复。父类可以是将子类的共同点抽象出来提升代码层次。 如何使用c来实现同样的效果首先肯定还是需要struct来构建父类和子类同时如果要达到is a的效果从内存空间来看也就意味着父类占据了子类内存地址的最开始位置。所以我们可以按照下面的方式来构造继承。 struct parent {void (*func1)(void); };struct child {struct parent pt;void (*func2)(void); };void test(struct parent *p) {p-func1(); }int main() {struct child cd;test((struct parent *)cd); }三、多态 多态就是在程序运行时父类指针可以根据具体的子类对象来执行不同的函数行为。c中一般通过虚函数来实现。c实现多态主要是通过结构体和函数指针。 #include stdio.h // 定义基类 struct Shape { void (*draw)(struct Shape*); };// 定义派生类 struct Circle { struct Shape shape; int radius; };struct Rectangle { struct Shape shape; int width; int height; };void drawCircle(struct Shape *shape) { printf(Drawing a circle...\n);struct Circle *circle (struct Circle *)shape;printf(Circle radius is %d\n, circle-radius); }void drawRectangle(struct Shape *shape) { printf(Drawing a rectangle...\n);struct Rectangle *rectangle (struct Rectangle *)shape;printf(Rectangle width is %d\n, rectangle-width);printf(Rectangle height is %d\n, rectangle-height); }int main() { struct Circle circle;circle.shape.draw drawCircle;circle.radius 10;struct Rectangle rectangle; rectangle.shape.draw drawRectangle;rectangle.width 10;rectangle.height 20;struct Shape *shape;shape (struct Shape *)circle;shape-draw(shape);shape (struct Shape *)rectangle;shape-draw(shape);return 0; }在Linux内核中数量最多的就是驱动程序代码因为硬件设备是多种多样的每种设备都会有对应的驱动程序。Linux对上层的接口都是统一和抽象的要保证相同的接口最终能够对应到特定的硬件设备这就需要使用多态的技巧。 include/linux/i2c.h 这个结构体定义了不少函数指针就是实现多态的关键struct i2c_driver {unsigned int class;/* Standard driver model interfaces */int (*probe)(struct i2c_client *, const struct i2c_device_id *);int (*remove)(struct i2c_client *);/* New driver model interface to aid the seamless removal of the* current probe()s, more commonly unused than used second parameter.*/int (*probe_new)(struct i2c_client *);/* driver model interfaces that dont relate to enumeration */void (*shutdown)(struct i2c_client *);/* Alert callback, for example for the SMBus alert protocol.* The format and meaning of the data value depends on the protocol.* For the SMBus alert protocol, there is a single bit of data passed* as the alert responses low bit (event flag).* For the SMBus Host Notify protocol, the data corresponds to the* 16-bit payload data reported by the slave device acting as master.*/void (*alert)(struct i2c_client *, enum i2c_alert_protocol protocol,unsigned int data);/* a ioctl like command that can be used to perform specific functions* with the device.*/int (*command)(struct i2c_client *client, unsigned int cmd, void *arg);struct device_driver driver;const struct i2c_device_id *id_table;/* Device detection callback for automatic device creation */int (*detect)(struct i2c_client *, struct i2c_board_info *);const unsigned short *address_list;struct list_head clients;bool disable_i2c_core_irq_mapping; }; drivers/i2c/i2c-slave-eeprom.c
http://www.w-s-a.com/news/908948/

相关文章:

  • 品牌形象网站有哪些珠海市区工商年报在哪个网站做
  • 注册域名不建设网站seo外包服务方案
  • 如何进行外贸网站建设wordpress文章输入密码可见
  • 政务网站建设索引常州做网站信息
  • 南宁做网站找哪家好wordpress 更改首页
  • 一个人在家做网站建设品牌策划流程
  • 小网站广告投放wordpress页面添加js
  • 仿制别人的竞价网站做竞价犯法吗wordpress添加版块
  • wordpress主题 站长互联网站备案表
  • 广州品牌策划公司排行南宁seo网络推广公司
  • 营销型网站图片肯德基网站开发
  • 网站的外链是什么wordpress开启菜单
  • 文字字体是什么网站西安博达网站建设
  • 北京南昌网站建设网站查看空间商
  • 网站建设人员职责分布乐清市网站建设设计
  • 网站建设etw网站建设陕西
  • 网站文章页内链结构不好可以改吗wordpress英文模板下载
  • 北京天通苑 做网站哈尔滨快速网站排名
  • 网站开发负责人是什么职位试剂网站建设
  • 什么是展示型网站wordpress链接视频
  • 佳木斯城乡建设局网站过年做哪个网站能致富
  • 石家庄快速网站搭建设计公司属于什么企业
  • 中小学智慧校园建设平台网站sem竞价推广
  • 想创建一个网站官方网站建设推广
  • 江门网站优化民间it网站建设
  • 科研实验室网站建设wordpress加载模板
  • 用r做简易的网站软件园二期做网站的公司
  • 菏泽网站建设价格长春高档网站建设
  • PHP网站开发与管理设计心得网站流量图怎么做
  • 苏州做网站企业wordpress点击文字弹出层