C++01.类的引入
2018-06-17 23:29:09来源:未知 阅读 ()
1.假设我们要输出张三,李四两个人的基本信息,包括姓名,年龄,可以用以下的C程序实现:
eg:
1 #include <stdio.h> 2 3 int main(int argc,char **argv) 4 { 5 char *zs_name="zhansan"; 6 int zs_age=10; 7 8 char *ls_name="lisi"; 9 int ls_age=19; 10 11 printf("name=%s,age=%d\n",zs_name,zs_age); 12 printf("name=%s,age=%d\n",ls_name,ls_age); 13 14 return 0; 15 }
2.假设要输出很多人的信息,那么用上面这样的程序思路实现起来很不方便,可以用数组来实现:
eg:
1 #include <stdio.h> 2 3 int main(int argc,char **argv) 4 { 5 char *names[]={"zhangsan","lisi"}; 6 char ages[]={10,19}; 7 8 int i; 9 10 //用for来循环输出 11 for(i=0;i<2;i++){ 12 printf("name=%s,age=%d\n",names[i],ages[i]); 13 } 14 15 16 return 0; 17 }
3.假设基本信息的属性有很多个,还有工作,婚姻状况等等的属性,按上面的程序思想,我们就得增加很多用于保存属性的数组,这显然也不是很方便,可以继续改进程序,引入结构体:
eg:
1 #include <stdio.h> 2 3 struct person{ 4 char *name; 5 int age; 6 char *work; 7 }; 8 9 int main(int argc,char **argv) 10 { 11 struct person persons[]={ 12 {"zhangsan",10,"teacher"}, 13 {"lisi",19,"doctor"}, 14 }; 15 16 int i; 17 18 //用for来循环输出 19 for(i=0;i<2;i++){ 20 printf("name=%s,age=%d,work=%s\n",persons[i].name,persons[i].age,persons[i].work); 21 }; 22 23 24 return 0; 25 }
4.上面的函数只是在结构体内定义了属性,我们可以继续改进,定义一些相关的函数:
eg:注意在C语言里面,只能写函数指针。
1 #include <stdio.h> 2 3 struct person{ 4 char *name; 5 int age; 6 char *work; 7 8 void (*printfInfo)(struct person *per); 9 }; 10 11 void printfInfo(struct person *per) 12 { 13 printf("name=%s,age=%d,work=%s\n",per->name,per->age,per->work); 14 } 15 16 int main(int argc,char **argv) 17 { 18 struct person persons[]={ 19 {"zhangsan",10,"teacher",printfInfo}, 20 {"lisi",19,"doctor",printfInfo}, 21 }; 22 23 persons[0].printfInfo(&persons[0]); 24 persons[1].printfInfo(&persons[1]); 25 26 return 0; 27 }
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[]={ {"zhangsan",10,"teacher"}, {"lisi",19,"doctor"}, }; persons[0].printfInfo(); persons[1].printfInfo(); return 0; }
6.C++对struct做了扩展,可以直接在strucr内直接定义函数,函数可以直接访问struct里面的属性。可以把这个结构体重新定义为一个新的类别:
eg:
1 #include <stdio.h> 2 3 class person{ 4 public: //必须定义权限为public,不然编译会出错。 5 char *name; 6 int age; 7 char *work; 8 9 void printfInfo(void) 10 { 11 printf("name=%s,age=%d,work=%s\n",name,age,work); 12 } 13 }; 14 int main(int argc,char **argv) 15 { 16 struct person persons[]={ 17 {"zhangsan",10,"teacher"}, 18 {"lisi",19,"doctor"}, 19 }; 20 21 persons[0].printfInfo(); 22 persons[1].printfInfo(); 23 24 return 0; 25 }
面向对象程序编程的特点:
(1)封装
(2)继承
(3)多态
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 线段树 2019-11-28
- C++连接SQL 2019-11-21
- .lib .dll 区别介绍、使用(dll的两种引入方式) 2019-08-16
- 二分查找 2019-08-16
- 最小环 2018-08-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash