您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++非类部分对C的扩充.
第二部分C++中非类部分对C的扩充内容概要(一)•2.1输入输出(I/O)操作•2.2内联函数•2.3函数的重载•2.4函数模板•2.5有默认参数的函数•2.6引用•2.7其他测试编写重载函数实现两个int型、两个float型和两个double型值相加。在主函数中对其进行调用,输出结果。要求:1)float型和double型值的输出保留3位小数2)用头文件和实现文件.cpp完成重载函数,用一个单独的.cpp文件完成主函数。(本要求可选)2.7其它•C++提供了较简便而功能较强的new和delete运算符代替函数malloc()和free(),动态地分配和释放内存.•new和delete运算符使用的一般格式:指针变量=new类型(初值)指针变量=new类型[数组长度]delete指针变量delete[]指针变量//表示是对数组空间的操作•new分配数组空间时不能指定初值.•delete一定要配对释放用new分配的内存,否则会导致内存泄漏、程序失控.由于是运算符,不是函数,因此执行效率高1.C++的new与delete运算符newint;//开辟一个存放整数的存储空间,//返回一个指向该存储空间的地址newint(100);//开辟一个存放整数的空间,指定该整数初值为100,//返回指向该存储空间的地址newchar[10];//开辟一个存放字符数组的空间,//返回首元素的地址float*p=newfloat(3.14159);//开辟一个存放单精度数的空间,指定初值3.14159,//将返回的该存储空间的地址赋给指针变量pdeletep;delete[]pt;//加一对方括号,//表示对数组空间的操作【例2.8】new和delete的用法.#includeiostream#includestringusingnamespacestd;structStudent{charname[10];intnum;charsex;};intmain(){Student*p=NULL;p=newStudent;strcpy(p-name,WangFun);p-num=10123;p-sex='M';coutp-namep-nump-sexendl;deletep;return0;}【例2.9】new和delete的用法2.#includeiostreamusingnamespacestd;#includestringvoidmain(){char*p;p=newchar[80];//创建一个指向字符数组的指针变量strcpy(p,“Acharacterstringallocatedusingthenewoperator.“);coutpendlendl;delete[]p;//释放指针变量p所占用的空间}#includeiostream//演示作用域访问符::usingnamespacestd;intnData;//全局变量voidmain(){intnData=1;//局部变量赋值::nData=10;//全局变量赋值coutlocalnData=nDataendl;coutglobalnData=::nDataendl;}2.作用域访问运算符::用于访问(分辨)全局名字(变量、对象等).【例2.10】说明全局变量nData的访问方法【例2.11】局部变量和全局变量#includeiostreamusingnamespacestd;floata=13.5;intmain(){inta=5;coutaendl;//局部变量cout::aendl;//全局变量return0;}3.C++函数原型在C++中,一定要使用函数原型,因为C++中编译系统对函数调用的合法性进行严格的检查,若缺少任何一个原型函数,C++都不能对其进行编译.函数原型既应标出函数的返回类型,也标出该函数的参数类型和个数。函数说明语句的一般形式为类型函数名(类型1,类型2,……,类型n)类型函数名(类型1参数1,……,类型n参数n)例如:floatsum(float,float)floatsum(floata,floatb)4.C++的注释方式①单行注释,以“//”开头直到行结束均作为注释;②多行注释,可使用C语言的多行注释方式,即用一对符号“/*”注释内容“/*”;5.C++符号常量定义在C语言中,用#defined宏定义来定义符号常量,例如:#definePI3.14159在C++中,使用const类型修饰符来定义符号常量,其形式为const类型符号常数名=常量;例如:constdoublePI=3.14159;6.向量——一种数据类型vector是向量类型,是一种对象实体,具有值,可以看做是变量.可以称为是一种“容器”.使用时,需要包含头文件vector.向量的常用定义方式:vector元素类型名a(10);vector元素类型名b(10,1);vector元素类型名c(b);vector元素类型名d(b.begin(),b.begin()+3);a.size()是向量中元素的个数a.begin()表示向量的第一个元素的位置a.end()表示向量的最后一个元素之外的元素的位置#includeiostream#includevectorusingnamespacestd;intmain(){vectorintb(10,1);vectorintc(b);vectorintd(b.begin(),b.begin()+3);inte[7]={1,2,3,3,5,6,9};vectorintf(e,e+7);coutvectorb=;for(inti=0;ib.size();i++)coutb[i];【例2.12】向量的定义与输出coutendlvectorc=;for(vectorint::iteratorit=c.begin();it!=c.end();++it)cout*it;coutendlvectord=;for(i=0;i3;i++)coutd[i];coutendlvectorf=;for(i=0;if.size();i++)coutf[i];coutendl;return0;}#includeiostream#includevectorusingnamespacestd;intmain(){vectorinta(10,0);vectorintb(10,1);coutvectora=;for(inti=0;ia.size();i++)couta[i];coutendlvectorb=;for(i=0;ib.size();i++)coutb[i];coutendl;a.assign(b.begin(),b.begin()+3);coutvectora=;for(i=0;ia.size();i++)couta[i];coutendl;a.assign(4,2);coutvectora=;for(i=0;ia.size();i++)couta[i];coutendl;【例2.13】向量的应用intx=a.back();coutx=xendl;inty=a.front();couty=yendl;a.push_back(5);coutvectora=;for(i=0;ia.size();i++)couta[i];coutendl;a.resize(10);coutvectora=;for(i=0;ia.size();i++)couta[i];coutendl;a.pop_back();coutvectora=;for(i=0;ia.size();i++)couta[i];coutendl;a.resize(10,2);coutvectora=;for(i=0;ia.size();i++)couta[i];coutendl;a.clear();if(a.empty())coutemptyendl;return0;}7.布尔型数据(booltype)布尔型变量的表示形式:boola,b=3,c=b-3;整数1和0是布尔量的表示范围,布尔量是用来表示逻辑运算的结论的:0表示false,1表示true;任何非零值给bool型变量赋值,其值都为1,布尔型量的默认输出值为整数1和0.向量与数组相比的好处是,其空间大小不需要提前指定,可以不断添加新的元素.但是,向量初始化时会分配一定的预留空间,如果添加元素的个数超过了预留空间,则需要扩容.8.字符串变量C++提供的一组处理字符串的便捷的方法——用字符串类型定义字符串变量.(1)字符串变量的定义及初始化string字符串变量名;//定义string字符串变量名=初始字符串;//初始化(2)字符串变量的赋值——定义字符串变量后,可以用赋值语句对它赋以一个字符串常量.stringstring1,string2;string1=“dog”;string2=string1;(3)字符串变量的运算1.赋值运算可以对字符串变量进行复制;2.加法运算符可以将字符串连接;stringstring1=“c++“;stringstring2=“language”;string1=string1+string2;3.关系运算符可以实现字符串比较;(4)字符串数组及字符串变量的输入输出string字符串数组名[数组中字符串变量的个数];cin字符串变量;cout字符串变量;#includeiostream#includealgorithm#includestringusingnamespacestd;intmain(){stringa1,a2=everyone,a3,a4=spring;//定义,初始化a1=hello;a3=a4;couta3endla2endl;//输出couta1+a2endl;//连接reverse(a2.begin(),a2.end());//倒置couta2endl;//倒置输出cout(a3.find(“ing”)!=-1?“”:“not”)“found”endl;//查找cout(a4.find(ab)!=-1?:not)foundendl;【例2.14】字符串变量的使用coutpleaseinputthreestrings:endl;cina1a2a3;if(a2a3)//比较并按序输出{a4=a2;a2=a3;a3=a4;}if(a1=a2)couta1a2a3endl;elseif(a1=a3)couta2a1a3endl;elsecouta2a3a1endl;return0;}标准C++库字符串类函数的相关用法begin得到指向字符串开头的Iteratorend得到指向字符串结尾的Iteratorrbegin得到指向反向字符串开头的Iteratorrend得到指向反向字符串结尾的Iteratorsize得到字符串的大小length()和size函数功能相同max_size字符串可能的最大大小capacity在不重新分配内存的情况下,字符串可能的大小empty判断是否为空operator[]取第几个元素,相当于数组c_str取得C风格的constchar*字符串data取得字符串内容地址operator=赋值操作符reserve预留空间swap交换函数insert插入字符append追加字符push_back追加字符erase删除
本文标题:C++非类部分对C的扩充.
链接地址:https://www.777doc.com/doc-2901902 .html