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语句都得修改添 ...
随机推荐
- 跟着老男孩教育学Python开发【第三篇】:Python函数
set 无序,不重复,可嵌套. 函数 创建函数: 1.def关键字,创建函数 2.函数名 3.() 4.函数体 5.返回值 发邮件函数 def sendmail(): import smtpl ...
- BZOJ 3626: [LNOI2014]LCA [树链剖分 离线|主席树]
3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2050 Solved: 817[Submit][Status ...
- php杂记(二)
1.获取客户端真实IP if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $onlineip = $_SERVER['HTTP_CLIENT_IP']; } else ...
- Spring7:基于注解的Spring MVC(下篇)
Model 上一篇文章<Spring6:基于注解的Spring MVC(上篇)>,讲了Spring MVC环境搭建.@RequestMapping以及参数绑定,这是Spring MVC中最 ...
- Dubbo学习小记
前言 周一入职的新公司,到了公司第一件事自然是要熟悉新公司使用的各种技术,搭建本地的环境. 熟悉新公司技术的过程中,首先就是Maven,这个前面已经写过文章了,然后就是Dubbo----公司的服务都是 ...
- Jquery双向select控件Bootstrap Dual Listbox
效果预览: 一. 下载插件 github地址:https://github.com/istvan-ujjmeszaros/bootstrap-duallistbox 也可以在这个网站中下载:http: ...
- 自动添加Linux登录账户,并授予sudo权限
#!/bin/bash USER=test PASS=$USER GROUP=root HOME=/data/home/$USER # if user not exist if [[ $(cat /e ...
- ABP框架 - 时间
文档目录 本节内容: 简介 时钟 客户端 时区 客户端 绑定器与转换器 简介 虽然有些应用目标市场只是在一个时区,有些应用目标市场是许多不同时区,为满足这种需求并集中化日期操作,ABP为日期操作提供公 ...
- Protobuf使用规范分享
一.Protobuf 的优点 Protobuf 有如 XML,不过它更小.更快.也更简单.它以高效的二进制方式存储,比 XML 小 3 到 10 倍,快 20 到 100 倍.你可以定义自己的数据结构 ...
- CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update.... yum install 或者 添加y ...