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语句都得修改添 ...
随机推荐
- mysql百万级分页优化
普通分页 数据分页在网页中十分多见,分页一般都是limit start,offset,然后根据页码page计算start , 这种分页在几十万的时候分页效率就会比较低了,MySQL需要从头开始一直往后 ...
- Quartz
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...
- CYQ.Data V5 从入门到放弃ORM系列:教程 - AppConfig、AppDebug类的使用
1:AppConfig类的介绍: Public Static (Shared) Properties IsEnumToInt 是否使用表字段枚举转Int方式(默认为false). 设置为true时,可 ...
- Web应用多账号系统设计及微信扫码登录实现
Web应用多账号系统设计及微信扫码登录实现 1 前言概述 公司对功能测试,性能测试,安全测试等等都做了比较好的自动化后,急需要一个MIS系统来统一管理这些结果及报表. 此MIS系统特点如下: 仅内 ...
- ABP框架 - 数据传输对象
文档目录 本节内容: DTO 必要性 领域层的抽象 数据隐藏 序列化和延迟加载问题 DTO 约定和验证 示例 DTO和实体间自动映射 使用特性和扩展方法进行映射 辅助接口和类 Data Transfe ...
- TODO:这是一个我的自媒体
TODO:这是一个我的自媒体 自媒体(外文名:We Media)又称"公民媒体"或"个人媒体",是指私人化.平民化.普泛化.自主化的传播者,以现代化.电子化的手 ...
- Java基础之IO流
很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...
- xcode低版本调试高版本真机系统
低版本xcode调试本真机高版本系统 //打开此路径把最新的文件拷贝到这里就可以了 /Applications/Xcode.app/Contents/Developer/Platforms/iPhon ...
- 【Win 10 应用开发】Web授权示例:获取新浪微博的授权码
在使用类似微博的开放API的时候,会涉及到授权的问题,就拿微博来说,当用户在你的应用中需要调用微博API来处理一些事情时,你首先要让用户登录微博,得到用户授权后,才能调用微博API. 授权通常通过一个 ...
- OpenCASCADE Data Exchange - 3D PDF
OpenCASCADE Data Exchange - 3D PDF eryar@163.com Abstract. Today most 3D engineering model data are ...