第1讲C与C语言的区别_第1页
第1讲C与C语言的区别_第2页
第1讲C与C语言的区别_第3页
第1讲C与C语言的区别_第4页
第1讲C与C语言的区别_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计与

VisualC++

本课程的意义&&未来职业面向对象程序设计田宜平电话:Email:中国地质大学计算机学院信息所武汉地大坤迪科技有限公司教材:《VisualC++面向对象程序设计》

戴光明李向编著中山大学出版社2005-11推荐参考教材1.《实用VisualC++6.0教程》[美]JonBates,TimTompkins著何健辉董方鹏等译2.《C++面向对象程序设计教程》陈维兴林小茶编著3.《C++程序设计教程》钱能编著清华大学出版社考试形式

一、交编程报告题目不固定(三种类型)

1.布置

2.你感兴趣的

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

把具有共同特征和行为的实体的集合归纳成类,程序是相互联系的离散对象的集合2、封装性:通过类,将数据和操作封装3、继承性:原有C++代码方便移植新程序4、多态性:相似而性质不同的操作有相同名称(如和操作有整数和与矢量和)1.2C++语言与C语言的关系1.2.1C++语言与C语言的联系C语言的特点:1、它是一种结构化程序设计语言2、它可以部分代替汇编语言3、它提供了丰富的数据类型和运算1.2C++语言与C语言的关系1.2.2C++语言与C的主要区别1、C++语言引进了类的概念,而C语言的结构只是数据的集合2、C++语言沿用了C语言的结构3、C++语言新增加的关键字classprivate,protected,publicthisnewdeletefriendoperateinlinevirtual1.2C++语言与C语言的关系1.2.3C++语言与C的细小区别1、C++语言保留了C的注释/**/增加行注释//2、const关键字#defineNumber1constNumber1它们功能相同,但后者编译要进行严格的类型检查。在C++都用const例如:C++:constintNumber=1,n=10;voidmain(){ inta;

constint*p; p=&Number; p=&n; *p=1;//错误 intn1=3;intconstn2=5;int*constpn=&n1;

pn=&n2;//错误*pn=6;//正确}常指针

使用const修饰指针时,由于const的位置不同,而含意不同。下面举两个例子,说明它们的区别。

(1).若声明指针常量,则指针pn所指向的变量是可以更新的,不可更新的是常量指针pn所指的方向。例:intn1=3;intconstn2=5;int*constpn=&n1;

pn=&n2;//错误*pn=6;//正确(2).若声明为指向常量的指针,则指针pn所指向的常量是不可以更新的,但可更新的是指针pn所指的方向。例:intn1=3;intconstn2=5;constint*pn=&n1;

pn=&n2;//正确*pn=6;//错误1.2.3C++语言与C的细小区别3、构造变量的说明不必在之前加struct例如:C:structAstructaS;(结构)unionAunionaU;(联合)enumBoolaB;(枚举)C++:AstructaS;(结构)AunionaU;(联合)BoolaB;(枚举)4、变量的说明可放在程序任何位置例如(forinti=0;i<100;i++)1.2.3C++语言与C的细小区别5、域运算符:有全局作用域,文件作用域,类作用域,函数作用域。通过“::”域限定符标识。例:inti; main() {inti; i=5;//对局部量i ::i=10;//对全局量i }//“::”域限定符。1.2.3C++语言与C的细小区别6、输入/输出C++:cout<<"Welcome!";C:printf("Welcome!");C++:cin>>a;C:scanf("%d",&a);C++:cout<<a<<endl;C:printf("%d\n",a);C++:#include<iostream.h>C:#include<stdio.h>1.2.3C++语言与C的细小区别7、动态单元C:#include<alloc.h>float*p;p=(float*)malloc(sizeof(float));freep;q=(int*)calloc(10,sizeof(int));

C++:float*p;p=new(float);deletep;q=newint[10];#include<iostream.h>//例子example1.cppvoidmain(){ inti,m,len; int*p; cout<<"inputnumberofdata:"<<endl; cin>>m; p=newint[m]; if(p==NULL) {cout<<"fail!!!";return;} cout<<"inputdata"<<endl; for(i=0;i<m;i++)cin>>p[i]; len=0;cout<<"inputdata"<<endl; for(i=0;i<m;i++)len+=p[i]*p[i]; cout<<"sqr_sum="<<len<<endl; deletep;}1.2.3C++语言与C的细小区别8、引用与引用调用引用为一个对象产生第二个名称,引用本身不是一个变量,只是一个变量的别名。定义如下:类型说明&引用=被引用的变量名;如:类型说明&A=B;我们称A是B的引用。引用的一些规则如下:

(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。

(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。

(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。变量引用:以下示例程序中,k被初始化为i的引用。语句k=j并不能将k修改成为j的引用,只是把k的值改变成为6。由于k是i的引用,所以i的值也变成了6。

inti=5;

intj=6;

int&k=i;

k=j;//k和i的值都变成了6;

按引用传递就是封装了的按指针传递!inttest(int&a,int*b);其中a为按引用传递,b为按指针传递!都可以修改原参数的值,如 inta1=10; intc=5; int*b1=&c; test(a1,b1);函数里面就可修改原变量a1和c的值.只不过在test()中用a=20就可以修改a1的值,而需要*b=30修改c的值!!

会发现“引用传递”的性质象“指针传递”,而书写方式象“值传递”。实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用”这东西?

答案是“用适当的工具做恰如其分的工作”。

指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用?

如果的确只需要借用一下某个对象的“别名”,那么就用“引用”,而不要用“指针”,以免发生意外。1.2.3C++语言与C的细小区别9、函数重载----静态多态性函数的重载是面向对象程序设计的多态性的实现,重载使得:在同一个函数名下,有该函数的多个具体实现;不同的具体实现有不同参数列表;在函数被调用时,编译器通过对函数的实参和形参进行最大限度的匹配,选择一个该函数的具体实现。

比方说加法,加法可以用于整数和有理数等在C++里可以用两个函数来实现这个目的。intintadd(intv1,intv2){ returnv1+v2;}floatfloatadd(floatv1,floatv2){ returnv1+v2;}使用的方式是这样的intia=1,ib=2,iab=0;floatfa=1.0,fb=2.0,fab=0.0;iab=intadd(ia,ib);fab=floatadd(fa,fb); 这样看起来很不直观,可读性不强,我们的目的是让人一眼就可以看出是在做相加运算。 两个函数的返回值和参数并不一样,这样就可以区别开两个不同的行为。这个特性可不可以利用呢?答案是可以,C++贴心的为我们做好了一切。原理很简单,将函数的返回值和参数用一种可逆的编码方法变成一个字符串,安插在函数名后面,编译器向用户屏蔽这一切,用户可以用同一个名字来使用不同的函数。就是这样intadd(in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论