您好,欢迎访问三七文档
C++语言编程程序设计方法的发展历程面向过程的程序设计方法程序的目的:用于数学计算主要工作:设计求解问题的过程缺点:对于庞大、复杂的程序难以开发和维护程序设计方法的发展历程面向过程的结构化程序设计方法设计思路自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之程序结构按功能划分为若干个基本模块各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成其模块化实现的具体方法是使用子程序程序设计方法的发展历程面向过程的结构化程序设计方法优点有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。程序设计方法的发展历程面向过程的结构化程序设计方法缺点:可重用性差、数据安全性差、难以开发图形界面的应用把数据和处理数据的过程相互独立当数据结构改变时,所有相关的处理过程都要进行相应的修改图形用户界面的应用,很难用过程来描述和实现,开发和维护都很困难面向对象的设计思想面向对象的程序设计方法将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。对同类型对象抽象出其共性,形成类。类通过一个简单的外部接口,与外界发生关系基本设计思想封装软件复用面向对象的设计思想面向对象的程序设计方法优点程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便面向对象的基本概念----对象一般意义上的对象是现实世界中一个实际存在的事物。可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。是构成世界的一个独立单位,具有:静态特征:可以用某种数据来描述动态特征:对象所表现的行为或具有的功能面向对象的基本概念----对象面向对象方法中的对象是系统用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。属性:用来描述对象静态特征的数据项。行为:用来描述对象动态特征的操作。面向对象的基本概念----类分类——人类通常的思维方法分类所依据的原则——抽象忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。例如,石头、树木、汽车、房屋等都是人们在长期的生产和生活实践中抽象出的概念。面向对象的基本概念----类面向对象方法中的类具有相同属性和行为的一组对象的集合为属于该类的全部对象提供了抽象的描述,包括属性和行为两个主要部分。类与对象的关系:犹如模具与铸件之间的关系,一个属于某类的对象称为该类的一个实例。面向对象的基本概念----封装把对象的属性和行为结合成一个独立的系统单位尽可能隐蔽对象的内部细节。对外形成一个边界(或者说一道屏障),只保留有限的对外接口使之与外部发生联系。面向对象的基本概念----继承继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。定义:特殊类的对象拥有其一般类的全部属性与行为,称作特殊类对一般类的继承。例如:将Person作为一个一般类,Student便是一个特殊类。面向对象的基本概念----多态性多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义。例如:数的加法-实数的加法-复数的加法C++语言概述C++语言的产生C++的特点一个简单的C++程序实例C++语言的产生C++是从C语言发展演变而来的,首先是一个更好的C。引入了类的机制,最初的C++被称为带类的C。1983年正式取名为C++。C++语言的标准化工作从1989年开始,于1994年制定了ANSIC++标准草案。以后又经过不断完善,成为目前的C++。C++的特点全面兼容C它保持了C的简洁、高效和接近汇编语言等特点对C的类型系统进行了扩充C++也支持面向过程的程序设计,不是一个纯正的面向对象的语言支持面向对象的方法类、对象、继承、抽象、封装、….一个简单的C++程序实例#includeiostream.hvoidmain(void){coutHello!\n;coutWelcometoc++!\n;}一个简单的C++程序实例运行结果:Hello!Welcometoc++!注释C中的注释:块注释/**//*Thisisacomment*/不允许嵌套C++中的注释C++继承了C的块注释方式增加了一种行注释方式C++把任何一行中从“//”开始直到该行结束的所有内容皆视为注释注释----一个简单的例子#includestdio.h#includeconio.hvoidmain(){//CheckingifakeywordisESCinti,key;while(1){key=getch();//Getakeyfromconsoleif(key==‘\x1B’{printf(“\nEscape!”);return;}elseprintf(“\nKeycodeis%2XH”,key);}}作用域模块:在C语言中模块的概念是指在花括号{}之间的一组语句作用域的种类局部模块作用语:变量定义在模块范围内文件作用域:变量定义在全局范围内,只限于当前文件的存取;全局作用域:变量定义在全局范围内,对全程序有效。实现方式:include和extern类作用域:变量定义在类中,在类范围内有效作用域::运算符:指明作用域。例intx;voidf(){intx=1;::x=2;return;}作用域----一个简单的例子#includestdio.hintglobal=10;voidmain(){intglobal=5;printf(“Thevalueofglobalis:%d\n”,global);return;}作用域----作用域分辨操作符全局变量访问::global#includestdio.hintglobal=10;voidmain(){intglobal=5;printf(“Thevalueofinnerglobalis:%d\n”,global);printf(“Thevalueofouterglobalis:%d\n”,::global);return;}指针指针是C语言的一个非常重要的特征实际上是内存地址,非常灵活且非常高效但又潜伏着非常大的危险性具有数据类型,可以进行指针运算无值型指针,void*,是一种非常有用且十分灵活的指针类型常量指针定义格式consttype*ptr_name;其含义是指向常量的指针不允许通过指针来修改其指向的对象的值可以修改指针的值例子constint*ptr;constinti=10;ptr=&i;//修改指针的值*ptr=i+10;//错误操作,试图修改指针指向的内容常量指针例子constchar*ptr;constcharstr[10]=“hehehe”;ptr=str;//指针赋值ptr[3]=‘’;//错误操作,试图修改指针指向的内容常量指针constint*ptr;inti=10;ptr=&i;//指针赋值,等价于(constint*)&i*ptr=15;//错误操作,试图修改指针指向的内容i++;cout“i=”*ptrendl;输出结果为:11常量指针不允许将const类型的变量地址赋值给一般的变量指针int*ptr;constinti=10;ptr=&i;//编译错误ptr=(int*)&i;//正确*ptr=*ptr+1;cout“i=”*ptrendl;输出结果为:11指针常量定义格式type*constptr_name;其含义是指针变量的值不可改变不允许修改指针变量的地址值可以修改指针指向的变量值,如果指向的对象不是一个常量的话例子int*constptr1;void*constptr2;指针常量intnum=10;int*constconst_ptr=#constint*ptr_to_const=#intconst*ptr=#const_ptr=(int*const)#//编译错误//试图修改一个指针常量的地址值*ptr=num;//编译错误//试图修改常量指针指向的对象值void类型1.说明函数没有返回值;voidfun(void){return;}2.表示函数不需要任何入口参数;doublefun(void){}3.可将指针说明为void型。这种指针可被赋以其它任何类型的指针。doublea=9.0;double*pd=&a;void*p;p=pd;练习用指针写一个swap函数,交换两个整数a和b的值。打印交换前后a,b的值。引用先看一个简单的例子inti,&j=i;i=1;cout“i=”iendl;//output:i=1j++;cout“i=”iendl;//output:i=2i++;cout“j=”jendl;//output:j=3引用引用的定义格式type&ref_name=var_name;引用定义说明引用必须在定义时进行初始化被引用的变量必须在引用定义之前定义引用一经定义,便无法重新引用其它变量引用对引用概念的理解inti=10,&j=i;在物理存储中,变量i有存储单元,但引用j没有存储单元,其具体表现是变量i和引用j的物理地址是相同的内存单元0XEFFF21有两个名字,可以将引用j理解为变量i的别名在同一个模块中的引用没有太大意义,但在函数调用时可以实现传名调用10变量i引用j0XEFFF21练习用引用写一个swap函数,交换两个整数a和b的值。打印交换前后a,b的值。C++的内存格局全局数据区(dataarea)代码区(codearea)栈区(stackarea)堆区(heaparea)C++的内存格局全局变量、静态数据、常量存放在全局数据区;所有类成员函数和非成员函数代码存放在代码区;为运行函数而分配的局部变量、函数参数、返回数据、返回地址等存放在栈区;其余的空间都被称为堆区。堆内存的分配与释放当程序运行到需要一个动态分配的变量或对象时,必须向系统申请取得堆中的一块所需大小的存贮空间,用于存贮该变量或对象。当不再使用该变量或对象时,也就是它的生命结束时,要显式释放它所占用的存贮空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源。在C++中,申请和释放堆中分配的存贮空间,分别使用new和delete的两个运算符来完成,其使用的格式如下:指针变量名=new类型名(初始化式);delete指针名;new运算符返回的是一个指向所分配类型变量(对象)的指针。对所创建的变量或对象,都是通过该指针来间接操作的,而动态创建的对象本身没有名字。堆内存的分配与释放C中的malloc和free函数在C++中可以用alloc.h头文件中声明void*malloc(size_tsize);voidfree(void*);堆内存的分配与释放if((array=(int*)malloc(arraysize*sizeof(int)))==NULL){cout“can’tallocatemorememory.\n”;exit(1);}…free(array);堆内存的分配与释放newnew类型名T(初值列表)功能:在程序执行期间,申请用于存放T类型对象的内存空间,并依据初值列表调用合适的构造函数。结果值:成功:T类型的指针,指向新分配的内存。失败:0(NULL)堆内存的分配与释放deletedelete指针P功能:释放指针P所指向的内存。P必须是new操作的返回值。堆内存的分配与释放1.用初始化式(initializer)来
本文标题:C++讲义完整版.
链接地址:https://www.777doc.com/doc-2901835 .html