C++01.类的引入
1.假设我们要输出张三,李四两个人的基本信息,包括姓名,年龄,可以用以下的C程序实现:
eg:
#include <stdio.h> int main(int argc,char **argv) { char *zs_name="zhansan"; ; char *ls_name="lisi"; ; printf("name=%s,age=%d\n",zs_name,zs_age); printf("name=%s,age=%d\n",ls_name,ls_age); ; }
2.假设要输出很多人的信息,那么用上面这样的程序思路实现起来很不方便,可以用数组来实现:
eg:
#include <stdio.h> int main(int argc,char **argv) { char *names[]={"zhangsan","lisi"}; ,}; int i; //用for来循环输出 ;i<;i++){ printf("name=%s,age=%d\n",names[i],ages[i]); } ; }
3.假设基本信息的属性有很多个,还有工作,婚姻状况等等的属性,按上面的程序思想,我们就得增加很多用于保存属性的数组,这显然也不是很方便,可以继续改进程序,引入结构体:
eg:
#include <stdio.h> struct person{ char *name; int age; char *work; }; int main(int argc,char **argv) { struct person persons[]={ {,"teacher"}, {,"doctor"}, }; int i; //用for来循环输出 ;i<;i++){ printf("name=%s,age=%d,work=%s\n",persons[i].name,persons[i].age,persons[i].work); }; ; }
4.上面的函数只是在结构体内定义了属性,我们可以继续改进,定义一些相关的函数:
eg:注意在C语言里面,只能写函数指针。
#include <stdio.h> struct person{ char *name; int age; char *work; void (*printfInfo)(struct person *per); }; void printfInfo(struct person *per) { printf("name=%s,age=%d,work=%s\n",per->name,per->age,per->work); } int main(int argc,char **argv) { struct person persons[]={ {,"teacher",printfInfo}, {,"doctor",printfInfo}, }; persons[].printfInfo(&persons[]); persons[].printfInfo(&persons[]); ; }
5.用更简洁的方式写上面的程序,直接在结构体内写函数,注意以下程序文件的后缀是“.cpp”而不是“.c”不然会出现错误。
eg:
#include <stdio.h> struct person{ char *name; int age; char *work; void printfInfo(void) { printf("name=%s,age=%d,work=%s\n",name,age,work); } }; int main(int argc,char **argv) { struct person persons[]={ {,"teacher"}, {,"doctor"}, }; persons[].printfInfo(); persons[].printfInfo(); ; }
6.C++对struct做了扩展,可以直接在strucr内直接定义函数,函数可以直接访问struct里面的属性。可以把这个结构体重新定义为一个新的类别:
eg:
#include <stdio.h> class person{ public: //必须定义权限为public,不然编译会出错。 char *name; int age; char *work; void printfInfo(void) { printf("name=%s,age=%d,work=%s\n",name,age,work); } }; int main(int argc,char **argv) { struct person persons[]={ {,"teacher"}, {,"doctor"}, }; persons[].printfInfo(); persons[].printfInfo(); ; }
面向对象程序编程的特点:
(1)封装
(2)继承
(3)多态
C++01.类的引入的更多相关文章
- ThinkPHP讲解(十)——第三方类的引入:以分页为主
第三方类的引入,以分页类为例: 1.在控制器里新建一个分页的操作方法FenYe() 注意:第三方类Page.class.php放在Think或Home文件夹下,并新近一个文件夹,放在里面,并在其类里加 ...
- C++第一篇--类的引入
C++第一篇--类的引入 1. 用C语言输出两个人的信息 Person1.c:通过字符实现 #include <stdio.h> int main(int argc,int **argv) ...
- day23 01 类的命名空间
day23 01 类的命名空间 一.初识面向对象复习 定义类: class 函数:方法 动态属性 变量:类属性 静态属性 过程: (1)_init_方法:初始化:def _init_(self,参数 ...
- 001_linuxC++之_类的引入
(一) C++类的引入,图片的程序比较好看,文中程序不贴出来 (二) 知识点 1. 成员函数的存取权限:公有的(public),保护的(protectd),私有的(private) 2. 第27行th ...
- php中class类文件引入方法汇总
在项目中 总是会用到类文件引入的操作,在此简单总结下: 方法一: 使用 include,require,include_once,require_once. 其中:*_once once意为曾经 ...
- Objective-C学习篇01—类的声明与实现
Objective-C,是美国人布莱德·确斯(Brad Cox)于 1980 年年初发明的一 种程序设计语言,其与同时代的 C++ 一样,都是在 C 的基础上加入面向对象特性扩充而成的.Objecti ...
- MVC无限级分类01,分层架构,引入缓存,完成领域模型与视图模型的映射
本系列将使用zTree来创建.编辑关于品牌.车系.车型的无限级分类,使用datagrid显示,源码在github.先上最终效果: datagrid显示所有记录.分页,提供添加.修改.删除按钮,并提供简 ...
- idea 创建多模块时模块类无法引入
我的原因是类的位置方的不对,由于刚搭建的项目,本来只想做个测试,就直接在java下创建类,然而这居然是个深坑,模块引入了也无法引入这个模块的类. 解决方法:创建com.***.***包后的类可以正常引 ...
- 第2课第1节_Java面向对象编程_类的引入_P【学习笔记】
摘要:韦东山android视频学习笔记 1. 面向对象编程的引入,我们先写一个简单的程序输出张三,李四的名字.代码如下,假如,现在我们要在名字前面添加籍贯广东,那样岂不是每个printf语句都得修改添 ...
随机推荐
- 用Swagger生成接口文档
Swagger简介 在系统设计的时候,各个应用之间往往是通过接口进行交互的.因此接口的定义在整个团队中就变得尤为重要.我们可以把接口的规范用接口描述语言进行描述,然后Swagger可以根据我们定义的接 ...
- redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作
前段时间在做用户画像的时候,遇到了这样的一个问题,记录某一个商品的用户购买群,刚好这种需求就可以用到Redis中的Set,key作为productID,value 就是具体的customerid集合, ...
- 在.NET Core控制台程序中使用依赖注入
之前都是在ASP.NET Core中使用依赖注入(Dependency Injection),昨天遇到一个场景需要在.NET Core控制台程序中使用依赖注入,由于对.NET Core中的依赖注入机制 ...
- 腾讯云上免费部署HTTPS
接上篇<腾讯云下安装 nodejs + 实现 Nginx 反向代理>,想从头一步到位的同学建议从上篇文章开始阅读.本文将继续介绍如何通过 Nginx 免费部署HTTPS. 留意下,这里的“ ...
- NodeJs 开发微信公众号(三)微信事件交互
微信公众号有个规则,一旦开启了开发者模式,其他的常规功能就都必须通过接口调用完成.比如说自定义菜单功能,必须通过发送post请求的方式生成.本章就通过关注到取消关注的整个过程来谈一谈nodejs是怎么 ...
- C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然 ...
- Running Dubbo On Spring Boot
Dubbo(http://dubbo.io/) 是阿里的开源的一款分布式服务框架.而Spring Boot则是Spring社区这两年致力于打造的简化Java配置的微服务框架. 利用他们各自优势,配置到 ...
- CSS样式表分类
1.内联样式表 <p style="font-size:11px;">内联样式表</p> 2.内嵌样式表 写在head标签里 <style typ ...
- Python学习--02输入和输出
命令行输入 x = input("Please input x:") y = raw_input("Please input x:") 使用input和raw_ ...
- CentOS 安装OciLib 4.2.1 (Linux)
项目要用oracle , Windows的 OciLib 好弄, 今天安装到linux下 ,编译老是出错,最后几行如下: checking for OCILIB install path... /us ...