C++第一篇--类的引入
C++第一篇--类的引入
1. 用C语言输出两个人的信息
Person1.c:通过字符实现
#include <stdio.h>
int main(int argc,int **argv)
{
char *zs_name = "zhangsan";
int zs_age = 10;
char *ls_name = "lisi";
int ls_age = 16;
printf("name=%s,age=%d\n",zs_name,zs_age);
printf("name=%s,age=%d\n",ls_name,ls_age);
}
Person2.c:通过数组实现
#include <stdio.h>
int main(int argc, char **argv)
{
char *names[] = {"zhangsan", "lisi"};
char ages[] = {10, 16};
char *work[] = {"teacher", "doctor"};
int i;
for (i = 0; i < 2; i++)
{
printf("name = %s, age = %d\n", names[i], ages[i]);
}
return 0;
}
Person3-1.c:通过结构体实现
#include <stdio.h>
struct person{
char *name;
char age;
char *work;
};
int main(int argc,int **arcv)
{
struct person Person[] = {
{"zhangsan",18,"Teacher"},
{"lisi",29,"Doctor"},
};
int i;
for(i = 0;i<2;i++)
{
printf("name is %s,age is %d,work is %s\n",Person[i].name,Person[i].age,Person[i].work);
}
return 0;
}
Person3-2.c:通过结构体实现,并在结构体实现打印函数
#include <stdio.h>
struct person{
char *name;
char age;
char *work;
void (*printInfo)(struct person *per); //C中结构体只可以实现函数指针
};
void printInfo(struct person *per)
{
printf("name is %s,age is %d,work is %s\n",per->name,per->age,per->work);
}
int main(int argc,int **arcv)
{
struct person Person[] = {
{"zhangsan",18,"Teacher",printInfo},
{"lisi",29,"Doctor",printInfo},
};
Person[0].printInfo(&Person[0]);
Person[1].printInfo(&Person[1]);
return 0;
}
2. 引入C++类
为了程序的简洁,现在用C++类实现,十分直观简单
C++对结构体进行的扩展,不仅可以直接实现函数,还可以直接访问结构体的属性,故引入C++类
Person4.cpp
#include <stdio.h>
class person{
public:
char *name;
char age;
char *work;
void printInfo(void)
{
printf("name is %s,age is %d,work is %s\n",name,age,work);
}
};
int main(int argc,int **arcv)
{
struct person Person[] = {
{"zhangsan",18,"Teacher"},
{"lisi",29,"Doctor"},
};
Person[0].printInfo();
Person[1].printInfo();
return 0;
}
3. 展望
接下来会开始写关于面向对象编程
- 封装
- 继承
- 多态
以上所有代码直接在Ubuntu下编译执行即可,之后代码也是如此
//C语言编译执行命令
gcc Person.c -o Person
./Person
//C++语言编译执行命令
g++ Person.c -o Person
./Person
C++第一篇--类的引入的更多相关文章
- 前端学PHP之面向对象系列第一篇——类和对象
× 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- [老老实实学WCF] 第一篇 Hello WCF
老老实实学WCF 第一篇 Hello WCF WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用 ...
- 老老实实学WCF[第一篇] Hell wcf
老老实实学WCF 第一篇 Hello WCF WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用 ...
- (转)[老老实实学WCF] 第一篇 Hello WCF
http://blog.csdn.net/songyefei/article/details/7363296#comments 老老实实学WCF 第一篇 Hello WCF WCF(Windows ...
- 转载:eclipse 搭建SSH项目(第一篇)
第一篇:原文地址:http://blog.csdn.net/aaaaaaaa0705/article/details/6288431(虽然没有具体的例子,不过逻辑性强点,比较容易看懂) SSH框架是最 ...
- Spring第一篇
我计划用3到五篇文章来描述Spring,这是第一篇 1 . 什么是Spring Spring 是一个开源框架,Spring 是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnso ...
- 在net中json序列化与反序列化 面向对象六大原则 (第一篇) 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变
在net中json序列化与反序列化 准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...
- 编程道拓扑bcd.top 0x01/ 开局第一篇: 随便聊聊/ 随笔
0x01 开局 编程道拓扑(bcd.top)是一个前端从业者的思考和总结, 如果你喜欢, 欢迎关注! 作者是一个前端从业者, 本系列会总结作者在工作和学习中的一些思考, 会有具体的技术点, 也会有关于 ...
随机推荐
- AngularJs 第三节随笔
利用$scope暴露模型数据 利用向控制器传递$scope对象的机制,可以把模型数据暴露给试图.在你的应用中可能还有其他数据,但是只有通过$scope 触及这些数据,angular才会把它当成数据模型 ...
- 一篇%3CDIV%20style%3D%22FONT-SIZE%
%3CDIV%20style%3D%22FONT-SIZE%3A%2016px%22%3E1%EF%BC%8C%E6%88%91%E4%BB%A5%E4%B8%BA%E7%BB%88%E6%9C%89 ...
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...
- 关于sqlmap的一些命令
Options(选项):--version 显示程序的版本号并退出-h, --help 显示此帮助消息并退出-v VERBOSE 详细级别:0-6(默认为1)Target(目标):以下至少需要设置其中 ...
- Ceph Object Gateway Admin api 获取用户列表问题
按照官方文档使用Admin Ops API 获取用户列表 GET /admin/user时 返回{code: 403, message: Forbidden}这里有两个问题:首先用户列表的请求为 如下 ...
- cordova 插件开发
从事基于cordova开发混合APP也快一年了,一直没有自己"亲自操刀"写一个插件,因为网上插件太丰富了,可耻了. 今天完整的记录一次插件开发. cordova环境6.4.0 第一 ...
- ionic2 跳转子页面隐藏底部导航栏
第一种方法: 在tab里面添加一个属性[tabsHideOnSubPages]='true' <ion-tab [root]="tab1Root" [tabsHideOnSu ...
- Python os模块--路径、文件、系统命令等操作
os模块包含普遍的操作系统功能. 注意:函数参数path是文件或目录的路径,filename是文件的路径,dirname是目录的路径,路径可以是相对路径,也可绝对路径 常见或重要的函数为加粗字体 os ...
- 数据结构之数据的next和nextval
KMP算法是模式匹配专用算法. 它是在已知模式串的next或nextval数组的基础上执行的.如果不知道它们二者之一,就没法使用KMP算法,因此我们需要计算它们. KMP算法由两部分组成: 第一部分, ...
- Kafka官方文档翻译——实现
IMPLEMENTATION 1. API Design Producer APIs Producer API封装了底层两个Producer: kafka.producer.SyncProducer ...