收藏 分享(赏)

第1讲 C++与C语言的区别.ppt

上传人:hyngb9260 文档编号:8159687 上传时间:2019-06-11 格式:PPT 页数:29 大小:320KB
下载 相关 举报
第1讲 C++与C语言的区别.ppt_第1页
第1页 / 共29页
第1讲 C++与C语言的区别.ppt_第2页
第2页 / 共29页
第1讲 C++与C语言的区别.ppt_第3页
第3页 / 共29页
第1讲 C++与C语言的区别.ppt_第4页
第4页 / 共29页
第1讲 C++与C语言的区别.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、面向对象程序设计与 Visual C+,本课程的意义 & 未来职业,面向对象程序设计,田宜平 电话:13871053827 Email: 中国地质大学计算机学院信息所 武汉地大坤迪科技有限公司 http:/,教材: Visual C+面向对象程序设计 戴光明 李向 编著 中山大学出版社 2005-11,推荐参考教材 1. 实用Visual C+ 6.0教程美 Jon Bates, Tim Tompkins著何健辉 董方鹏 等译 2. C+面向对象程序设计教程 陈维兴 林小茶 编著 3. C+程序设计教程 钱能 编著 清华大学出版社,考试形式,一、交编程报告题目不固定(三种类型)1. 布置2.

2、 你感兴趣的3. 你的课题中的一个问题要求: 源程序和报告用Email交 二、平时成绩 三、笔试,面向对象程序设计的主要内容,第一部分C+语言基础知识(预备知识)主要介绍C+语言与C语言不同的内容 第二部分面向对象程序设计(重点内容)主要讲述面向对象程序设计的基本思想与原理 第三部分面向对象程序设计实例(实践操作主要讲解MFCWindows编程和数据库编程等实例,第一部分 C+语言概述,1.1 C+语言的起源和特点1.2 C+语言与C语言的关系1.3 C+语言展望,1.1.1 C+语言的起源1、C+语言是从C语言继承来的,主要表现在语句形式、模块化程序设计 2、C语言对大而复杂的系统是力不从心

3、的 3、80年Bell实验室改进ANSI C 产生C+语言 ( ANSL:美国国家标准研究所),1.1.2 C+语言的特点 1、C+语言是支持面向对象的设计语言把具有共同特征和行为的实体的集合归纳成类,程序是相互联系的离散对象的集合 2、封装性:通过类,将数据和操作封装 3、继承性:原有C+代码方便移植新程序 4、多态性:相似而性质不同的操作有相同名称(如和操作有整数和与矢量和),1.2 C+语言与C语言的关系,1.2 .1 C+语言与C语言的联系C语言的特点: 1、它是一种结构化程序设计语言2、它可以部分代替汇编语言3、它提供了丰富的数据类型和运算,1.2 C+语言与C语言的关系,1.2 .

4、2 C+语言与C的主要区别1、C+语言引进了类的概念,而C语言的结构只是数据的集合 2、 C+语言沿用了C语言的结构 3、 C+语言新增加的关键字 class private, protected ,public this new delete friend operate inline virtual,1.2 C+语言与C语言的关系,1.2 .3 C+语言与C的细小区别 1、C+语言保留了C的注释 /* */ 增加行注释/ 2、const 关键字#define Number 1const Number 1 它们功能相同,但后者编译要进行严格的类型检查。在C+都用const,例如:C+: co

5、nst int Number=1,n=10; void main() int a;const int *p;p= /正确 ,常指针 使用const修饰指针时,由于const的位置不同,而含意不同。下面举两个例子,说明它们的区别。,(1).若声明指针常量,则指针pn所指向的变量是可以更新的,不可更新的是常量指针pn所指的方向 。 例: int n1=3; int const n2=5; int *const pn= /正确,(2).若声明为指向常量的指针,则指针pn所指向的常量是不可以更新的,但可更新的是指针pn所指的方向 。,例: int n1=3; int const n2=5; const

6、 int *pn= /错误,1.2 .3 C+语言与C的细小区别 3、构造变量的说明不必在之前加struct 例如: C: struct Astruct aS; (结构)union Aunion aU;(联合)enum Bool aB;(枚举) C+: Astruct aS; (结构)Aunion aU;(联合)Bool aB;(枚举) 4、变量的说明可放在程序任何位置 例如(for int i=0;i100;i+),1.2 .3 C+语言与C的细小区别 5、域运算符: 有全局作用域,文件作用域,类作用域,函数作用域。通过“:”域限定符标识。例:int i;main() int i; i=5;

7、 /对局部量i:i=10; /对全局量i/“:”域限定符。,1.2 .3 C+语言与C的细小区别 6、输入/输出C+:couta; C: scanf(“%d“,C+:#include C: #include,1.2 .3 C+语言与C的细小区别 7、动态单元C:#includefloat*p; p=(float*)malloc(sizeof(float);free p; q=(int*)calloc(10,sizeof(int);C+:float*p;p=new(float); delete p; q=new int10;,#include /例子example1.cpp void main(

8、) int i,m,len; int *p;coutm; p=new intm;if(p=NULL)coutpi;len=0; cout“input data“endl;for(i=0;im;i+)len+=pi*pi;cout“sqr_sum=“lenendl;delete p;,1.2 .3 C+语言与C的细小区别 8、引用与引用调用引用为一个对象产生第二个名称,引用本身不是一个变量,只是一个变量的别名。定义如下: 类型说明 我们称A是B的引用。,引用的一些规则如下: (1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。 (2)不能有NULL引用,引用必须与合法的存储单元关

9、联(指针则可以是NULL)。 (3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。 变量引用:以下示例程序中,k被初始化为i的引用。语句k = j并不能将k修改成为j的引用,只是把k的值改变成为6。由于k是i的引用,所以i的值也变成了6。 int i = 5; int j = 6; int ,按引用传递就是封装了的按指针传递! int test(int 函数里面就可修改原变量a1和c的值. 只不过在test()中用a=20就可以修改a1的值,而需要*b=30 修改c的值!,会发现“引用传递”的性质象“指针传递”,而书写方式象“值传递”。实际上“引用”可以做的任何事情“

10、指针”也都能够做,为什么还要“引用”这东西? 答案是“用适当的工具做恰如其分的工作”。 指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用? 如果的确只需要借用一下某个对象的“别名”,那么就用“引用”,而不要用“指针”,以免发生意外。,1.2 .3 C+语言与C的细小区别 9、函数重载-静态多态性 函数的重载是面向对象程序设计的多 态性的实现,重载使得: 在同一个函数名下,有该函数的多个具体实现; 不同的具体实现有不同参数列表; 在函数被调用时,编译器通过对函数的实参和形参进行最大限度的匹配,选择一个该函数的具

11、体实现。,比方说加法,加法可以用于整数和有理数等 在C+里可以用两个函数来实现这个目的。int intadd( int v1 , int v2 ) return v1+v2; float floatadd( float v1 , float v2 ) return v1+v2; ,使用的方式是这样的int ia = 1 , ib = 2 , iab = 0; float fa = 1.0 , fb = 2.0 , fab = 0.0; iab = intadd( ia ,ib ); fab = floatadd( fa , fb );这样看起来很不直观,可读性不强,我们的目的是让人一眼就可以看

12、出是在做相加运算。,两个函数的返回值和参数并不一样,这样就可以区别开两个不同的行为。这个特性可不可以利用呢?答案是可以,C+贴心的为我们做好了一切。原理很简单,将函数的返回值和参数用一种可逆的编码方法变成一个字符串,安插在函数名后面,编译器向用户屏蔽这一切,用户可以用同一个名字来使用不同的函数。,就是这样 int add( int v1 , int v2 ) return v1+v2; float add( float v1 , float v2 ) return v1+v2; int ia = 1 , ib = 2 , iab = 0; float fa = 1.0 , fb = 2.0 , fab = 0.0; iab = add( ia ,ib ); fab = add( fa , fb );,1.3 C+语言展望 便于编制大型的复杂的软件 面向对象的思想是程序设计思想的革命,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报