![Chap2+C++對C語言的擴(kuò)充_第1頁](http://file4.renrendoc.com/view/3542d05b33bfe83c1c443739d27a336e/3542d05b33bfe83c1c443739d27a336e1.gif)
![Chap2+C++對C語言的擴(kuò)充_第2頁](http://file4.renrendoc.com/view/3542d05b33bfe83c1c443739d27a336e/3542d05b33bfe83c1c443739d27a336e2.gif)
![Chap2+C++對C語言的擴(kuò)充_第3頁](http://file4.renrendoc.com/view/3542d05b33bfe83c1c443739d27a336e/3542d05b33bfe83c1c443739d27a336e3.gif)
![Chap2+C++對C語言的擴(kuò)充_第4頁](http://file4.renrendoc.com/view/3542d05b33bfe83c1c443739d27a336e/3542d05b33bfe83c1c443739d27a336e4.gif)
![Chap2+C++對C語言的擴(kuò)充_第5頁](http://file4.renrendoc.com/view/3542d05b33bfe83c1c443739d27a336e/3542d05b33bfe83c1c443739d27a336e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章C++對C語言的擴(kuò)充主要內(nèi)容2.1C++的特點(diǎn)2.2C++語言的文件擴(kuò)展名2.3注釋符2.4名字空間2.5C++語言的輸入輸出2.6變量的定義2.7強(qiáng)制類型轉(zhuǎn)換2.8動態(tài)內(nèi)存的分配與釋放2.9作用域運(yùn)算符::2.10引用2.11const修飾符2.12字符串2.13C++語言中函數(shù)的新特性2.1C++的特點(diǎn)由C語言擴(kuò)展而來,保留了C語言的優(yōu)點(diǎn)添加了面向?qū)ο缶幊痰闹С志幊坦δ軓?qiáng)大。程序結(jié)構(gòu)清晰、易于擴(kuò)充,適合于各種應(yīng)用軟件、系統(tǒng)軟件的設(shè)計(jì)程序可讀性好,生成的代碼質(zhì)量高,運(yùn)行效率僅比匯編語言慢10%~20%源文件擴(kuò)展名C++語言:“.cpp”(意即CPlus-Plus)C語言:“.C”頭文件擴(kuò)展名C++語言:“.h”
或“.hpp”C語言:“.h”2.2C++語言的文件擴(kuò)展名2.3注釋符
段注釋:/*…*/單行注釋://程序編譯時(shí)將忽略所有的注釋內(nèi)容名字空間:面向?qū)ο蟪绦蛟O(shè)計(jì)的重要概念。它為用戶提供一個空間,在里面可定義自己的函數(shù)或類,當(dāng)定義的函數(shù)或類和他人定義的重名時(shí),可用名字空間來區(qū)分。名字空間用花括號把文件的一部分括起來,并以關(guān)鍵字namespace開頭。namespacens1{floata,b,c;fun1(){……}}2.4名字空間2.4名字空間花括號括起來的部分稱聲明塊。聲明塊中可包括:類、變量、函數(shù)等。在域外使用域內(nèi)成員時(shí),需加上名字空間名作為前綴,后面加上域操作符“::”
。最外層的名字空間域稱為全局名字空間域,即文件域。名字空間域可分層嵌套,同樣有分層屏蔽作用。namespacen1{namespacen2{ //名字空間嵌套
classmatrix{……} //名字空間類成員matrix}}訪問matrix,可寫:n1::n2::matrix。2.4名字空間標(biāo)準(zhǔn)C++庫中的所有組件都是在一個被稱為std的名字空間中聲明和定義的。使用標(biāo)準(zhǔn)C++庫中的組件,只要寫一個using指示符:
usingnamespacestd;
注意:如果使用了名空間std,則在使用#include編譯預(yù)處理命令包含頭文件時(shí),必須去掉頭文件的擴(kuò)展名.h,否則會出錯。2.5C++語言的輸入輸出cout<<“輸出內(nèi)容”<<…;
//cout為標(biāo)準(zhǔn)輸出流對象(默認(rèn)輸出到顯示器)cin>>“輸入內(nèi)容”>>…;
//cin為標(biāo)準(zhǔn)輸入流對象(默認(rèn)從鍵盤輸入)輸入輸出函數(shù)聲明:#include<iostream.h>輸入輸出舉例:li-2-1.cpp例2.1C++的輸入輸出舉例#include<iostream>//使用名字空間std,必須去掉.h擴(kuò)展名usingnamespacestd;voidmain(){charname[10];intage;cout<<"pleaseinputyourname:";cin>>name;cout<<"Howoldareyou:";cin>>age;cout<<"nameis"<<name<<endl;cout<<"ageis"<<age<<endl;}2.6變量的定義C++允許變量的定義語句可以出現(xiàn)在程序的任何位置。C++還允許直接使用結(jié)構(gòu)體名定義變量。在C++語言中聯(lián)合名、枚舉名也可在定義后獨(dú)立地作為類型名使用。舉例:li-2-2.cpp例2.2C++的變量定義舉例#include<iostream>usingnamespacestd;voidmain(){ structstudent { intno; floatmath; }; intn; cin>>n; studentwang;
wang.no=n; cin>>wang.math; cout<<wang.no<<""<<wang.math<<endl;}2.7強(qiáng)制類型轉(zhuǎn)換格式:(數(shù)據(jù)類型)(表達(dá)式)數(shù)據(jù)類型(表達(dá)式)(1)強(qiáng)制類型轉(zhuǎn)換得到一個所需類型的中間值。原來表達(dá)式的值類型并未改變。如:intb;floatf;f=float(b);
(2)強(qiáng)制類型轉(zhuǎn)換符優(yōu)先級較高,只對緊隨其后的表達(dá)式起作用,而對其他部分不起作用。如表達(dá)式float(i)*f(3)強(qiáng)制類型轉(zhuǎn)換應(yīng)當(dāng)用在不做轉(zhuǎn)換將影響表達(dá)式結(jié)果的正確性或精度,或不能完成相應(yīng)運(yùn)算的場合。2.8動態(tài)內(nèi)存的分配與釋放new運(yùn)算符
指針變量=new數(shù)據(jù)類型;如:int*p;p=newint;new從堆內(nèi)存中為程序分配一塊內(nèi)存空間,并返回指向該內(nèi)存的首地址,該地址存放于指針變量中。堆內(nèi)存可以按照要求進(jìn)行分配,若程序在運(yùn)行中不再需要由new分配的內(nèi)存空間,則可把先前占用的內(nèi)存空間釋放。注:C語言中由malloc()函數(shù)分配內(nèi)存2.8動態(tài)內(nèi)存的分配與釋放delete運(yùn)算符delete指針變量;如:deletep;(1)用new獲取的內(nèi)存空間,必須用delete進(jìn)行釋放;(2)對一個指針只能調(diào)用一次delete;(3)用delete運(yùn)算符作用的對象必須是用new分配的內(nèi)存空間的首地址。注:C語言中由free()函數(shù)分配內(nèi)存例2.3new與delete應(yīng)用舉例#include<iostream>usingnamespacestd;voidmain(){int*p;p=newint;//分配內(nèi)存空間*p=5;cout<<*p;deletep;}//釋放內(nèi)存空間可以在用new分配內(nèi)存的同時(shí)進(jìn)行初始化。使用形式為:指針變量=new數(shù)據(jù)類型(初始值);例如上例中的:p=newint; *p=5;也可寫成:p=newint(5);4.用new建立數(shù)組類型的變量指針變量=new數(shù)據(jù)類型[數(shù)組大小];如:int*p=newint[5];此時(shí)指針變量指向第一個數(shù)組元素的地址。使用new分配數(shù)組時(shí),不能提供初始值。使用new建立的數(shù)組變量由delete釋放。delete指針變量;或delete[]指針變量;如:deletep;或delete[]p;【例2.4】從堆內(nèi)存中獲取一個整型數(shù)組,賦值后并打印出來。#include<iostream>usingnamespacestd;voidmain(){intn;//定義數(shù)組元素的個數(shù)
int*p;cout<<"pleaseinputthelengthofthearray:";cin>>n;if((p=newint[n])==0){cout<<"can'tallocatemorememory,terminating."<<endl;exit(1);}//分配內(nèi)存空間
for(inti=0;i<n;i++) p[i]=i*2;cout<<"Nowoutputthearray:"<<endl;for(i=0;i<n;i++)cout<<p[i]<<"";cout<<endl;
delete[]p;//釋放內(nèi)存空間}通常情況下,如果全局變量與局部變量同名,那么局部變量在其作用域內(nèi)具有較高的優(yōu)先權(quán)。C語言規(guī)定只能在變量的作用域內(nèi)使用該變量,不能使用其他作用域中的變量。而C++中提供了作用域運(yùn)算符::,它能指定所需要的作用域。注意:不能用::訪問函數(shù)中的局部變量。在C++語言中作用域運(yùn)算符::還可用來限定類的成員。2.9作用域運(yùn)算符::
2.9作用域運(yùn)算符::#include<iostream>usingnamespacestd;floata=2.4;//全局變量voidmain(){inta=8;//局部變量
cout<<a<<endl;cout<<::a<<endl;//::a表示全局作用域中的變量a}輸入兩個整數(shù)交換后輸出#include<iostream>usingnamespacestd;voidswap(inta,intb){ intt=a; a=b; b=t;}intmain(){ intx=5,y=10; cout<<"x="<<x<<"y="<<y<<endl;
swap(x,y); cout<<"x="<<x<<"y="<<y<<endl; return0;}213.1函數(shù)的定義與使用——3.1.3函數(shù)的參數(shù)傳遞運(yùn)行結(jié)果: x=5y=10 x=5y=1022a=b;5x10y5a10b執(zhí)行主函數(shù)中的函數(shù)調(diào)用swap(x,y);t=a;5x10y5a10b5tb=t;5x10y10a5b5t5x10y10a10b5t在swap子函數(shù)中返回主函數(shù)以后5x10y3.1函數(shù)的定義與使用——3.1.3函數(shù)的參數(shù)傳遞在C++語言中引用用于在程序的不同部分使用兩個以上的變量名指向同一地址,使對其中任一變量的操作實(shí)際上都是對同一地址單元進(jìn)行的。被聲明為引用類型的變量名是實(shí)際變量名的別名。引用運(yùn)算符為&,聲明引用的一般形式為:數(shù)據(jù)類型&引用變量名=變量名;或數(shù)據(jù)類型&引用變量名=變量名;或數(shù)據(jù)類型&引用變量名=變量名;對引用進(jìn)行操作,實(shí)際上就是對被引用的變量進(jìn)行操作。引用不是值,不占存儲空間,聲明引用時(shí),目標(biāo)的存儲狀態(tài)不會改變。引用一旦被初始化,就不能再重新賦值。2.10引用【例2.5】引用舉例#include<iostream.h>voidmain(){intnum=50; int&ref=num; ref+=10; cout<<"num="<<num<<endl; cout<<"ref="<<ref<<endl;num+=40; cout<<"num="<<num<<endl; cout<<"ref="<<ref<<endl;}說明:(1)在一行上聲明多個引用型變量(函數(shù))名時(shí),要在每個變量(函數(shù))名前都冠以“&”符號。(2)引用不是變量,所以引用本身不能被修改,在程序中對引用的存取都是對它所引用的變量的存取。(3)一個變量被聲明為引用時(shí)必須進(jìn)行初始化,除非這個引用是用作函數(shù)的參數(shù)或返回值,為引用提供的初始值應(yīng)為變量(包括對象)。2.10引用(4)由于引用不是變量,所以,不能說明引用的引用,也不能說明數(shù)組元素的類型為引用數(shù)組,或指向引用的指針。例如:int&a[5];//錯誤int&*p;//錯誤由于指針也是變量,因此可以說明對指針變量的引用。例如:int*a;int*&p=a;intb;p=&b;//a指向變量b(5)引用與指針不同。指針的內(nèi)容或值是某一變量的內(nèi)存單元地址,而引用則與初始化它的變量具有相同的內(nèi)存單元地址。指針是個變量,可以把它再賦值成其它的地址,然而,建立引用時(shí)必須進(jìn)行初始化并且決不會再指向其它不同的變量。2.10引用(6)要注意區(qū)分引用運(yùn)算符和地址運(yùn)算符的區(qū)別。例如:intnum=50;int&ref=num;int*p=&ref;(7)可以用一個引用初始化另一個引用。例如:intnum=50;int&ref1=num;int&ref2=ref1;ref2=100; //num被修改為100其中ref2也是對num的引用。2.10引用(8)可把函數(shù)的參數(shù)說明成引用以建立函數(shù)參數(shù)的引用傳遞方式。(9)有空指針,無空引用(10)引用不能用數(shù)據(jù)類型來初始化。如:
int&ref=int;
//error(11)函數(shù)調(diào)用可以作為左值引用表達(dá)式是一個左值表達(dá)式,因此它可以出現(xiàn)在形、實(shí)參數(shù)的任何一方。若一個函數(shù)返回了引用,那么該函數(shù)的調(diào)用也可以被賦值。一般說,當(dāng)返回值不是本函數(shù)內(nèi)定義的局部變量時(shí)就可以返回一個引用。在通常情況下,引用返回值只用在需對函數(shù)的調(diào)用重新賦值的場合,也就是對函數(shù)的返回值重新賦值的時(shí)候。避免將局部作用域中變量的地址返回,就使函數(shù)調(diào)用表達(dá)式作為左值來使用?!纠?.8】
【例2.9】例輸入兩個整數(shù)交換后輸出#include<iostream>usingnamespacestd;voidswap(int&a,int&b){ intt=a; a=b; b=t;}intmain(){ intx=5,y=10; cout<<"x="<<x<<"y="<<y<<endl;
swap(x,y); cout<<"x="<<x<<"y="<<y<<endl; return0;}283.1函數(shù)的定義與使用——3.1.3函數(shù)的參數(shù)傳遞運(yùn)行結(jié)果:x=5y=10x=10y=5#definePI3.1415926constfloatPI=3.1415926;floatPI=3.1415926;這個常量是有類型的,它有地址,可用指針指向這個值,但不能修改它。C++建議用const取代#define定義常量。2.11const修飾符注意:(1)使用const修飾符定義常量時(shí),必須初始化;(2)常量一旦被定義,在程序中任何地方都不能再更改。(3)如果用const定義的是一個整型常量,int可以省略。(4)與#define定義的常量有所不同,const定義的常量可以有自己的數(shù)據(jù)類型,這樣C++編譯程序可以進(jìn)行更加嚴(yán)格的類型檢查,具有良好的編譯時(shí)的檢測性。2.11const修飾符2.11const修飾符(5)函數(shù)參數(shù)也可以用const說明,用于保證實(shí)參在該函數(shù)內(nèi)部不被改動,大多數(shù)C++編譯器能對具有const參數(shù)的函數(shù)進(jìn)行更好的代碼優(yōu)化。例如,通過函數(shù)max求出整型數(shù)組a[100]中的最大值,函數(shù)原型應(yīng)該是:
intmax(constint*pa);
這樣做的目的是確保原數(shù)組的數(shù)據(jù)不被破壞,即在函數(shù)中對數(shù)組元素的操作只許讀,不許寫。(1)指向常量的指針
指向常量的指針是指一個指向常量的指針變量。constchar*pc="abcd";聲明指向常量的指針變量pc,它指向一個字符串常量由于使用了const,不允許改變指針?biāo)傅某A?,因此以下語句是錯誤的:pc[3]='x';但是由于pc是一個指向常量的普通指針變量,不是常指針,因此可以改變pc的值。例如以下語句是允許的:pc="jkkk";const與指針組合使用const與指針組合使用(2)常指針常指針是指指針本身,而不是它指向的對象聲明為常量。例如:char*constpc="abcd";//常指針這個語句的含義為:聲明一個名為pc的指針變量,該指針是指向字符型數(shù)據(jù)的常指針,用“abcd”的地址初始化該常指針。創(chuàng)建一個常指針,就是創(chuàng)建不能移動的固定指針,但是它所指的數(shù)據(jù)可以改變。例如:pc[3]='x';//合法pc="dfasdfa";//不合法const與指針組合使用(3)指向常量的常指針整個指針本身不能改變,它所指向的值也不能改變。要聲明一個指向常量的常指針,二者都要聲明為const。例如:constchar*constpc="abcd";//指向常量的常指針這個語句的含義為:聲明一個名為pc的指針變量,它是一個指向字符型常量的常指針,用“abcd”的地址初始化該指針。以下兩個語句都是錯誤的:pc[3]='x';//錯誤,不能改變指針?biāo)傅闹祊c="dfasdfa";//錯誤,不能改變指針本身在C語言中使用字符數(shù)組和字符指針實(shí)現(xiàn)字符串,但是在C++中提供了一種既方便又好用的string類型。2.12字符串2.13C++語言中函數(shù)的新特性2.13.1 函數(shù)原型(FunctionPrototype)2.13.2 內(nèi)聯(lián)(inline)函數(shù)2.13.3 帶缺省參數(shù)的函數(shù)2.13.4 函數(shù)重載(overload)2.13.5 函數(shù)模板(functiontemplate)2.13.1函數(shù)原型C++要求為每一個函數(shù)建立原型,用以說明函數(shù)的名稱、參數(shù)個數(shù)及類型和函數(shù)返回值的類型。其主要目的是讓C++編譯程序進(jìn)行類型檢查,即形參與實(shí)參的類型匹配檢查,以及返回值是否與原型相符,以維護(hù)程序的正確性。所以應(yīng)養(yǎng)成將聲明與定義分別編寫的編程習(xí)慣。函數(shù)原型與函數(shù)的定義要在函數(shù)的返回類型,函數(shù)名和參數(shù)的類型及數(shù)量這三條線上保持一致。在寫函數(shù)原型時(shí),可以省略形參的名字,因?yàn)閰?shù)名對編譯器沒有意義,但如果取名恰當(dāng)?shù)脑挘@些名字可以起到提示參數(shù)用途的作用。在執(zhí)行程序過程中如果要進(jìn)行函數(shù)調(diào)用,則系統(tǒng)要將程序當(dāng)前的一些狀態(tài)信息存到棧中,之后進(jìn)行虛實(shí)結(jié)合,同時(shí)轉(zhuǎn)到函數(shù)的代碼處去執(zhí)行函數(shù)體語句,這些參數(shù)保存與傳遞的過程中需要時(shí)間和空間的開銷,使得程序執(zhí)行效率降低,特別是在程序頻繁地進(jìn)行函數(shù)調(diào)用以及函數(shù)代碼段比較少時(shí),這個問題會變得更為嚴(yán)重。為了解決這個問題,C++引入了內(nèi)聯(lián)函數(shù)機(jī)制。使用內(nèi)聯(lián)函數(shù)是一種用空間換時(shí)間的措施,若內(nèi)聯(lián)函數(shù)較長,且調(diào)用太頻繁時(shí),程序?qū)⒓娱L很多。因此,通常只有較短的函數(shù)才定義為內(nèi)聯(lián)函數(shù),對于較長的函數(shù)最好作為一般函數(shù)處理。一般情況下,我們對內(nèi)聯(lián)函數(shù)做如下的限制:(1)不能有遞歸(2)不能包含靜態(tài)數(shù)據(jù)(3)不能包含循環(huán)(4)不能包含switch和goto語句(5)不能包含數(shù)組若一個內(nèi)聯(lián)函數(shù)定義不滿足以上限制,則編譯系統(tǒng)把它當(dāng)作普通函數(shù)對待?!纠?.11】內(nèi)聯(lián)函數(shù)的使用。
2.13.2 內(nèi)聯(lián)函數(shù)例
內(nèi)聯(lián)函數(shù)應(yīng)用舉例#include<iostream>usingnamespacestd;constdoublePI=3.14159265358979;inlinedoublecalArea(doubleradius){ returnPI*radius*radius;}intmain(){ doubler=3.0;
doublearea =calArea(r); cout<<area<<endl; return0;}393.2內(nèi)聯(lián)函數(shù)2.13.3 帶缺省參數(shù)的函數(shù)如果在函數(shù)說明或函數(shù)定義中為形參指定一個缺省值,則稱此函數(shù)為帶缺省參數(shù)的函數(shù)。當(dāng)函數(shù)調(diào)用發(fā)生后,在形參表中等號后的各“缺省值”將起實(shí)參的傳遞作用。如果函數(shù)有多個缺省參數(shù),則缺省參數(shù)必須是從右向左定義,并且在一個缺省參數(shù)的右邊不能有未指定缺省值的參數(shù)。voidfun(inta,intb,intc,intd=5);fun(1,2,3)voidfun(inta=65,intb=3,intc,intd=3);//錯誤如果在函數(shù)原型的聲明中設(shè)置了函數(shù)參數(shù)的缺省值,則不可再在函數(shù)定義的頭部重復(fù)設(shè)置,否則編譯時(shí)將出現(xiàn)錯誤信息。默認(rèn)參數(shù)值與函數(shù)的調(diào)用位置如果一個函數(shù)有原型聲明,且原型聲明在定義之前,則默認(rèn)參數(shù)值必須在函數(shù)原型聲明中給出;而如果只有函數(shù)的定義,或函數(shù)定義在前,則默認(rèn)參數(shù)值需在函數(shù)定義中給出。例:413.3帶默認(rèn)參數(shù)值的函數(shù)intadd(intx=5,inty=6){//只有定義,沒有原型聲明returnx+y;}intmain(){add();}intadd(intx=5,inty=6);//原型聲明在前intmain(){add();}intadd(intx,inty){//此處不能再指定默認(rèn)值returnx+y;}//.cpp#include<iostream>#include<iomanip>usingnamespacestd;
intgetVolume(intlength,intwidth=2,intheight=3);
intmain(){ constintX=10,Y=12,Z=15; cout<<"Someboxdatais"; cout<<getVolume(X,Y,Z)<<endl; cout<<"Someboxdatais"; cout<<getVolume(X,Y)<<endl; cout<<"Someboxdatais"; cout<<getVolume(X)<<endl; return0;}
intgetVolume(intlength,intwidth/*=2*/,intheight/*=3*/){ cout<<setw(5)<<length<<setw(5)<<width<<setw(5)<<height<<'\t'; returnlength*width*height;}423.3帶默認(rèn)參數(shù)值的函數(shù)C++編譯系統(tǒng)允許為兩個或兩個以上的函數(shù)取相同的函數(shù)名,但是形參的個數(shù)或者形參的類型不應(yīng)相同,編譯系統(tǒng)會根據(jù)實(shí)參和形參的類型及個數(shù)的最佳匹配,自動確定調(diào)用哪一個函數(shù),這就是所謂的函數(shù)重載。函數(shù)重載無需特別聲明,只要所定義的函數(shù)與已經(jīng)定義的同名函數(shù)形參形式不完全相同,C++編譯器就認(rèn)為是函數(shù)的重載。2.13 函數(shù)重載在使用重載函數(shù)時(shí)要注意:①不可以定義兩個具有相同名稱、相同參數(shù)類型和相同參數(shù)個數(shù),只是函數(shù)返回值不同的函數(shù)。intfunc(intx);floatfunc(intx);②如果某個函數(shù)參數(shù)有缺省值,必須保證其參數(shù)缺省后調(diào)用形式不與其它函數(shù)混淆。intf(inta,floatb);voidf(inta,floatb,intc=0);函數(shù)調(diào)用語句:f(10,2.0);具有二義性,既可以調(diào)用第一個函數(shù),也可以調(diào)用第二個函數(shù),編譯器不能根據(jù)參數(shù)的形式確定到底調(diào)用哪一個。2.13.4 函數(shù)重載例3-16重載函數(shù)應(yīng)用舉例編寫兩個名為sumOfSquare的重載函數(shù),分別求兩整數(shù)的平方和及兩實(shí)數(shù)的平方和。453.4函數(shù)重載#include<iostream>usingnamespacestd;intsumOfSquare(inta,intb){returna*a+b*b;}doublesumOfSquare(doublea,doubleb){returna*a+b*b;}intmain(){intm,n;cout<<"Entertwointeger:";cin>>m>>n;cout<<"Theirsumofsquare:"<<sumOfSquare(m,n)<<endl;doublex,y;cout<<"Entertworealnumber:";cin>>x>>y;cout<<"Theirsumofsquare:"<<sumOfSquare(x,y)<<endl;return0;}463.4函數(shù)重載C++語言中可以使用模板來避免在程序中多次書寫相同的代碼。所謂模板是一種使用無類型參數(shù)來產(chǎn)生一系列函數(shù)或類的機(jī)制。它的實(shí)現(xiàn)方法方便了更大規(guī)模的軟件開發(fā)。模板是以一種完全通用的方法來設(shè)計(jì)函數(shù)和類,而不必預(yù)先說明將被使用的每個對象的數(shù)據(jù)類型。通過模板可以產(chǎn)生類或函數(shù)的集合,使它們操作不同的數(shù)據(jù)類型,從而避免為每一種數(shù)據(jù)類型產(chǎn)生一個單獨(dú)的類或函數(shù)。模板分為函數(shù)模板和類模板,C++提供的函數(shù)模板可以定義一個對任何類型變量進(jìn)行操作的函數(shù),從而大大增強(qiáng)了函數(shù)設(shè)計(jì)的通用性。這是因?yàn)槠胀ê瘮?shù)只能傳遞變量參數(shù),而函數(shù)模板提供了傳遞類型的機(jī)制。使用函數(shù)模板的方法是先說明函數(shù)模板,然后實(shí)例化成相應(yīng)的模板函數(shù)進(jìn)行調(diào)用執(zhí)行。2.13.5 函數(shù)模板函數(shù)模板的一般說明形式如下:template<模板參數(shù)表><返回值類型><函數(shù)名>(模板函數(shù)形參表){//函數(shù)定義體}<模板參數(shù)表>尖括號中不能為空,參數(shù)可以有多個,用逗號分開。模板參數(shù)主要是模板類型參數(shù)。模板類型參數(shù)(templatetypeparameter)代表一種類型,由關(guān)鍵字class或typename后加一個標(biāo)識符構(gòu)成,在這里兩個關(guān)鍵字的意義相同,它們表示后面的參數(shù)名代表一個基本數(shù)據(jù)類型或用戶定義的類型。1.函數(shù)模板1.函數(shù)模板如果類型形參多于一個,則每個類型形參都要使用class或typename。<模板函數(shù)形參表>中的參數(shù)必須是唯一的,而且<函數(shù)定義體>中至少出現(xiàn)一次。如:template<classT>,則“T”可以在程序運(yùn)行時(shí)被任何C++語言支持的數(shù)據(jù)類型所取代。如有兩個以上的模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年太陽能光伏電站設(shè)備檢修及維護(hù)合同
- 2025年度個人住房借款居間服務(wù)合同范本
- 2025年度城市軌道交通工程進(jìn)度管理協(xié)議合同
- 電力安全教育在科技發(fā)展中的角色與挑戰(zhàn)
- 2025年度禁止放牧區(qū)域生態(tài)修復(fù)工程合同
- 2025年度海洋資源開發(fā)與應(yīng)用合伙協(xié)議
- 電商物流技術(shù)創(chuàng)新與智能化發(fā)展路徑
- 冀教版數(shù)學(xué)七年級上冊《求代數(shù)式的值》聽評課記錄2
- 生態(tài)農(nóng)業(yè)與生態(tài)教育普及的相互促進(jìn)
- 環(huán)境科學(xué)中微生物生態(tài)學(xué)的實(shí)踐意義
- 2025年湖南中醫(yī)藥高等專科學(xué)校高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 寧波2025年浙江寧波市鄞州區(qū)衛(wèi)健系統(tǒng)其他事業(yè)單位招聘事業(yè)編制46人筆試歷年參考題庫附帶答案詳解
- 【七上HK數(shù)學(xué)】安徽省蚌埠市固鎮(zhèn)縣2024-2025學(xué)年七年級上學(xué)期1月期末試卷數(shù)學(xué)試題
- 電信網(wǎng)和互聯(lián)網(wǎng)圖像篡改檢測技術(shù)要求與測試方法
- 2025屆江蘇省南京市鹽城市高三一??荚囌Z文試題 課件
- 《水稻生長進(jìn)程》課件
- 2024版企業(yè)高管職務(wù)任命書3篇
- 青少年鑄牢中華民族共同體意識路徑研究
- JT-T-1180.1-2018交通運(yùn)輸企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化建設(shè)基本規(guī)范第1部分:總體要求
- 省政府審批單獨(dú)選址項(xiàng)目用地市級審查報(bào)告文本格式
- 往復(fù)式壓縮機(jī)安裝方案
評論
0/150
提交評論