文档章节

C中的面向对象

IT周见智
 IT周见智
发布于 2015/06/05 17:17
字数 411
阅读 3
收藏 0
点赞 0
评论 0

      四月计算机语言排行榜,C王者归来,重登王者宝座,居然干掉了JAVA。说在前面的。

      都说c++是面向对象的,可为了满足c++语言的初衷:a better C!c++不得不兼容C,于是我们还是看得到写在类外面的函数、变量什么的,C#就不同了,结合Java和c++的各自优点,完全的面向对象,今天我要说的是用C来模仿C#中的面向对象,注意,仅是模仿~~~

1)、c#中有类class,那么在C中用结构体struct代替;

2)、c#类中有成员函数,那么C中用函数指针代替;

下面各定义一个类和结构体,来表示一种窗体,当点击窗体时,提示窗体的ID和窗体的标题:

c#中的类:

C#中的类
 1  class  Window
 2  {
 3      private   string  WndText;
 4      private   string  WndID;
 5      public  Window( string  text, string  id)
 6     {
 7          WndText = text;
 8          WndID = id;
 9     }
10      public   void  OnClick()
11     {
12       Console.Write( " 窗体 " + WndID + " 的标题为: " + WndText);
13     }
14  }

 

客户端程序:

1  Window win = new  ( " 实例窗体 " , " 0x12345678 " );
2  win.OnClick(); // 显示信息

 

 

C中的结构体

1  Struct Window
2  {
3      char   * WndText;
4      char   * WndID;
5      void  ( * OnClick)(char *text,char *id); // 函数指针
6  };

 

客户端程序:

代码
void  fun( char   * text, char   * id)
{
   printf(
" 窗体%s的标题为:%s " ,id,text);
}
Window win;
win.WndText
= " c中的窗体 " ;
win.WndID
= " 0x87654321 " ;

win.OnClick
= fun; // 函数指针

win.OnClick(win.WndText,win.WndID);
// 像类一样调用它的"成员函数"

 

网上见一牛话:如果你爱编程,那么请爱C;如果你爱C,那么请爱指针;如果你爱指针,那么请爱指针的指针。

 

 

© 著作权归作者所有

共有 人打赏支持
IT周见智

IT周见智

粉丝 10
博文 61
码字总数 185891
作品 0
西青
总结objective-c特点

Objective-C与其它面向对象有这明显的不同,它有这自己鲜明的特色,下面我们从这个方法介绍它的特点:兼容性、字符串、类、方法、属性、协议和分类。 1. 兼容性 Objective-C可以说是一种面向...

晨曦之光
2012/05/16
239
0
1.2 面向对象语言的发展历史

Simula 面向对象技术最早是在编程语言Simula中提出的。1967年5月20日,在挪威奥斯陆郊外的小镇莉沙布举行的IFIP TC-2 工作会议上,挪威科学家Ole-Johan Dahl和Kristen Nygaard正式发布了Sim...

无寄语
2016/08/13
42
0
python面向对象

这一节心累,反复看多遍才理清头绪,想跟整理笔记花一天时间,老了就是要服气! 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属...

帅旗军
2017/03/16
0
0
Android NDK开发之旅18--C++--命名空间

前言——C++简介 C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。 C++可以与C代码进行混编,C++里面可以写C,但是反过来不可以。 C++是面向对象编程语言、C是面向过程...

香沙小熊
2017/11/16
0
0
objective-c(四)-基本数据类型以及循环和选择结构

这部分知识,对于没学过编程的人来说得好好去看看,但对于以及有c或者c++还有java等的开发经验的人来说,只需要略略的看看,找到与其他语言的不同即可,这里我就不短话长说了。 其实这部分知...

whybangbang
2012/12/29
0
0
结构型模式:Flyweight 享元模式

结构型模式:Flyweight 享元模式 1、面向对象的代价 1)面向对象很好地解决了系统抽象性的问题,同时在大多数情况下,也不会损及系统的性能。但是,在某些特殊的应用中,由于对象的数量太大...

flyhighly
2011/04/24
0
0
4.1 面向对象思想概述和举例

1:面向对象思想 面向对象是基于面向过程的编程思想。 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一种更符合我们思想习惯...

msirene
2015/09/04
41
0
一、C语言概述

说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 为什么iOS开发要先...

长平狐
2013/03/28
109
1
面向对象编程的面向过程表示:c java go

题目就这么抽象~。~其实一点都不抽象,老师以前也说过吧,面向对象就是建立在面向过程的基础上的。 下面这些主要是能让大家吸收一些较新鲜的编程思路,对于嵌入式编程大有裨益,对理解面向对...

fbf
2014/01/15
0
0
C语言面向对象编程(四):面向接口编程

Java 中有 interface 关键字,C++ 中有抽象类或纯虚类可以与 interface 比拟,C 语言中也可以实现类似的特性。 接口和抽象类有什么区别? 很多编程书籍也经常说要面向接口编程,我的理解是,...

follitude
2016/05/04
20
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
10分钟前
0
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
10分钟前
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
11分钟前
0
0
jq 判断复选框是否被选中,复选框后台接收

1. 效果 2. 代码 html部分: JS部分: var rememberLogin = $("#rememberLoginId").is(':checked')//获取复选框是否被选中 var rememberLoginval = $("#rememberLoginId").attr('value')//拿......

Lucky_Me
18分钟前
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
18分钟前
0
0
《趣谈网络协议》之为什么要学习网络协议?

一、协议 1.协议的定义 简单说协议就是一个规则,保证沟通交流双方可以互相听懂、理解或者可以双方合作可以顺利进行的一个约定和规则。 2.生活中例子 (1)有一种叫“程序猿”的物种,敲着一种...

aibinxiao
19分钟前
1
0
Python数据分析numpy基础-维度的认识

什么是多维数组? 核心对象是同型的多维数组(简单理解就是一个表格,通常内容都是些数字),具有相同的数据类型。 概念: 1. axes(轴):数组的维度统称为轴。 2. rank:轴的数量称为rank。...

十年磨一剑3344
24分钟前
0
0
Java 正则表达式相关资料

1.java正则表达式过滤html标签

IT追寻者
27分钟前
0
0
点赞出现数字变大效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ padding: 50px; border: 1px solid #dddddd; } .item{ position: relative; } ......

南桥北木
45分钟前
0
0
anroid中批量将px转换成dp

package com.qu;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class Aaaa {public static void main(String[] args) {String fi......

android-key
47分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部