C语言如何实现C++中对象属性和方法

  在C++中,我们常见到用类定义一个对象,这个对象可以有他自己的属性(数据)和方法(函数),而在C语言的正常语法中,是禁止在结构体中定义函数的。

  在一个关于触摸屏的驱动程序中发现,用C语言的也可以实现对象的方法(函数)。

  首先定义一个按键的结构体。

  1、我们先来讨论第二个函数指针void(*btn_command)(); 我们用该结构体定义的对象想要使用这个函数指针实现方法的效果之前,需要对这个指针赋予一个同类型的函数指针(无形参的函数指针)。例如

  在这里函数的名字,即为指向该函数的指针。在使用此方法时,只需

  我们又会想到,当我们需要的方法需要调用对象自身的属性(数据)时,我们改如何操作呢?

  接下来我们看第一个函数指针。

  2、void (*draw_btn)(void * btn); 他同样定义了一个函数指针,但他的入口参数需要一个任意类型的指针,我们在使用它时,需要用强制转换类型操作,将其转换为我们需要的指针类型(实参的指针类型)。这个方法在使用前,同样需要将他赋值为一个同类型函数的函数指针(此处是形参为一个任意类型的指针)。例如

  在下面的函数中,先将形参转换为我们需要的指针类型(Touch_Button *),在转入到一个同类型的指针中,就可以用同类型的指针调取该类型的属性了。

  使用时,只需要将我们需要的对象的地址传入即可。如下,

原文地址:https://www.cnblogs.com/xiaocheng7/p/9420362.html

时间: 2024-08-30 12:43:36

C语言如何实现C++中对象属性和方法的相关文章

JavaScript 中关于Date的内置对象属性和方法的总结

Date 属性: 1.constructor    所建立对象的函数参考 2.prototype      能够为对象加入的属性和方法 方法: 1.getDay()    返回一周中的第几天(0-6) 2.getYear()    返回年份.2000年以前为2位,2000(包含)以后为4位 3.getFullYear()     返回完整的4位年份数 4.getMonth()      返回月份数(0-11) 5.getDate()       返回日(1-31) 6.getHours()  

Swift语言中的属性,方法,下标脚本以及继承

从这篇章节起,Swift编程语言指南大部分的重要内容在于概念,代码并不是太多.理解Swift的面向对象理念,语法以及类结构,构造析构过程对于很好的应用Swift语言将会有比较大的帮助. 属性 存储属性 存储属性通常是那些可以通过直接赋值,或者直接访问成员能够获得的属性类型. 它有些要注意的地方: 若一个结构体被声明为常量,则子属性无法被修改了.在Objective-C中,我们总是无法修改结构体的子属性,但是swift却可以,不过这种情况是个例外,当你存储型属性是个结构体并且是个常量,那你就不要再

关于vue数组中对象属性变更页面没重新渲染的问题

前段时间做开发的时候用mqtt监听了服务端信息,推送过来的数据要变更数组里面的对象的数据,修改好后但是页面并没有更新,因为javascript机制,vue并不能检测到数组变化,也是查阅知道了$set()函数, 具体用法: arr.$set(index, { name : value }), index: 索引,name: 数组中对象的属性名, value: 要赋给属性的值 this.footerList.$set(i, { siteId : monitorSiteData[j].siteId,

JavaScript中对象属性的添加和删除

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /* * 用.为对象添加属性 用关键字delete删除属性 用[]添加属性 和.的不同 r.name==r["name"]; r.

javascript中对象属性搜索原则

为什么通过对象就能访问到原型中的属性或者方法? 属性搜索原则: 1 首先会在对象本身查找有没有该属性,如果有直接返回 2 如果没有,此时就会在构造函数中查找通过this给对象添加的成员中有没有,如果有就直接返回 3 如果没有, 就回到对象的原型对象中去查找,如果有,就返回 4 如果没有, 就会到原型对象的原型对象中查找.... 5 如此 往复,如果最后也没有找到, 获取到的值就是: undefined

IE8中的Event对象属性与方法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

Javascript对象属性与方法汇总

1 Javascript对象属性与方法汇总 2 发布时间:2015-03-06 编辑:www.jquerycn.cn 3 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符串.数组.日期等对象的属性与常用方法,有需要的朋友参考下. 4 本节主要内容: 5 Javascript对象属性与方法 6 7 对Javascript对象属性方法做一个详细的汇总介绍,供jquery中文网的朋友参考. 8 9 数组(Array):系列元素的有序集合 10 属性: 11 l

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons

JavaScript之Ajax-1 Ajax(Ajax原理、Ajax对象属性和方法)

一.Ajax原理 Ajax简介 - Asynchronous JavaScript And Xml 异步的 JavaScript 和 Xml - Ajax 是一种用来改善用户体验的技术,其实质是,使用XMLHttpRequest对象异步地向服务器发送请求 - 服务器返回部分数据,而不是一个完整的页面,以页面无刷新的效果更改页面中的局部内容 Ajax工作原理 获取Ajax对象 二.Ajax对象属性和方法 异步对象的属性和方法 onreadystatechange - onreadystatecha