




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C+基础(1),1、namespace2、const修饰符3函数3.1函数的定义与调用3.2函数原型与带默认参数的函数3.3函数的参数传递3.4内联函数与重载函数3.5标准库函数,2,2.1.3名字空间,C+语言提供名字空间(namespace)防止命名冲突。1.名字空间的定义namespace名字空间名称;关于名字空间定义的说明:定义名字空间以关键字namespace开头,名字空间名称是合法的用户自定义标识符。以一对大括号括起该名字空间的开始和结束处,右大括号后面不加分号。在名字空间以外声明或定义的任何实体,都可以出现在名字空间内。,3,2.名字空间中内容的使用方法一:在需要使用名字空间中内容时用下面的形式:名字空间名称:局部内容名方法二:在使用该内容之前用:usingnamespace名字空间名称;方法三:using名字空间名称:局部内容名;,4,【例2.2】关于名字空间的主要用法示例。,/*02_02.cpp*/#includeusingnamespacestd;/using声明使用一个完整的名字空间std/C+中提供的名字空间std涵盖了所有标准C+的定义和声明namespaceone/定义一个名字空间one,有M和infconstintM=200;intinf=10;/后面不加分号namespacetwo/定义一个名字空间two,有x和infintx;intinf=-100;/后面不加分号,5,usingnamespaceone;/using声明使用一个完整的名字空间oneintmain()usingtwo:x;/using声明仅使用two中的xx=-100;/直接访问,相当于two:x=-100;coutinfendl;/直接使用one中所有成员coutMendl;two:inf*=2;/使用名字空间名:局部内容名,操作未使用using声明的内容couttwo:infendl;/同样是two中的内容,但是访问方式不一样coutxendl;/直接访问two中的x,6,10200-200-100,程序的运行结果为:,7,2、const修饰符,/#define的不安全性#includemain()inta=1;#defineT1a+a#defineT2T1-T1coutT2isT2endl;return0;,输出:T2is2,解释成a+a-a+a,8,例用const取代#define。#includeintmain()inta=1;constT1=a+a;constT2=T1-T1;coutT2isT2bc;sum1=sum(a,b);/调用函数求两个整数的和total=sum(sum1,c);/调用函数求两个整数的和couta+b+c=totalab;sum=add(a,b);coutb;sum1=sum(a,b);/求a与b的和cout“a+b=”sum1endl;/输出a与b的和sum2=sum(a);/求a与默认值的和couta+?=sum2endl;/输出a与默认值的和intsum(intx,inty)/定义计算两个整数和的函数returnx+y;,【例2】带默认参数,16,#includeintadd(inta=3,intb=10);/函数原型说明voidmain()intsum;sum=add(1,2);coutsum;intadd(inta,intb)returna+b;,sum=add(1);,sum=add();,17,3.3函数的参数传递(稍后讲),函数被调用前,形参没有存储空间,也没有实际的值。函数被调用时,系统建立与实参对应的形参存储空间,函数通过形参与实参通信、进行操作。函数执行完毕,系统收回作为形参的临时存储空间。这个过程称为参数传递或参数的虚实结合。C+有两种参数传递机制:值传递(值调用)和引用传递(引用调用)。,1.值传递在值传递机制中,作为实参表达式的值被复制到由对应的形参名所标识的一个对象中,作为形参的初始值。数据的传递是单向的。,2.引用传递使用引用作函数的形参时,调用函数的实参要用变量名。实参传递给形参,相当于在被调用函数中使用了实参的别名。于是,在被调用函数中对形参的操作,实质是对实参的直接操作,即数据的传递是双向的。,18,【例】值传递,#include/交换两个对象的值。voidswap(int,int);intmain()inta=5,b=10;coutbeforeswapingendl;couta=a,b=bendl;swap(a,b);coutafterswapingendl;couta=a,b=bendl;return0;voidswap(intm,intn)inttemp=m;m=n;n=temp;,19,【例】将引用作为参数(稍后讲),#include/交换两个对象的值。voidswap(int,20,3.4引用返回(稍后讲),C+引入引用的目的为了方便函数间数据的传递。引用的另一个主要用途是用于返回引用的函数,即引用返回。,21,【例】返回引用(稍后讲),#include/返回两个数较大值的引用intmaxab;int,注意:返回的对象是全局对象或静态对象。(因为返回的是一个实际的单元,要保证有效性。),22,#include/引用返回函数inta=1,6,11,12;int,【例】定义一个引用返回函数,并将该函数用在赋值运算符的左边。,23,4内联函数,使用inline关键字声明一个函数,也称内嵌函数,它主要是解决程序的运行效率。其定义格式如下:inline返回值类型函数名(形式参数表)函数体,24,例内联函数的使用#includeinlinedoublecircle(doubler)/内联函数return3.1416*r*r;intmain()for(inti=1;i=3;i+)coutr=iarea=circle(i)endl;return0;,25,例内联函数的使用#includedoublecircle(doubler);/此处不要inlineintmain()for(inti=1;i=3;i+)coutr=iarea=circle(i)endl;return0;inlinedoublecircle(doubler)/内联函数return3.1416*r*r;,26,使用内联函数应注意:递归函数不能定义为内联函数内联函数一般适合于不含有switch和while等复杂的结构且只有15条语句的小函数,否则编译系统将该函数视为普通函数内联函数只能先定义后使用,否则编译系统也将该函数视为普通函数对内联函数也不能进行异常接口声明,27,5重载函数,重载函数通常用来对具有相似行为而数据类型不同的操作提供个通用的名称。编译系统将根据函数参数的类型和个数来判断使用哪一个函数。C+要求重载的函数具有不同的签名。函数签名包括:函数名参数的个数、数据类型和顺序,28,【例2.11】重载函数的用法。,#includeintsum(intx,inty);/两个形参intsum(intx,inty,intz);/3个形参voidmain()intx1,x2;x1=sum(3,4);cout3+4=x1endl;x2=sum(3,4,5);cout3+4+5=x2endl;intsum(intx,inty)/定义计算两个整数和的函数returnx+y;intsum(intx,inty,intz)/定义计算3个整数和的函数returnx+y+z;,29,例参数类型不同的重载函数#includeintcube(inti)returni*i*i;floatcube(floatf)returnf*f*f;doublecube(doubled)returnd*d*d;,voidmain()inti=12;floatf=3.4;doubled=5.67;cout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论