版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、0,C+面向?qū)ο蟪绦蛟O(shè)計(jì) 山東理工大學(xué) 黃晶晶 ,1,教材,選用教材 C+面向?qū)ο蟪绦蛟O(shè)計(jì) 譚浩強(qiáng),2,培養(yǎng)目標(biāo),理解和掌握C+語(yǔ)言的基本語(yǔ)法和語(yǔ)義; 理解面向?qū)ο蟮乃枷耄莆彰嫦驅(qū)ο蟪绦蛟O(shè)計(jì)的方法; 逐步提高學(xué)生的編程能力和調(diào)試程序的能力; 為后面的學(xué)習(xí)打好基礎(chǔ)。,3,課 程 簡(jiǎn)介 第一章 C+的初步知識(shí) 第二章 類和對(duì)象 第三章 再論類和對(duì)象 第四章 運(yùn)算符重載 第五章 繼承與派生 第六章 多態(tài)性與虛函數(shù) 第七章 輸入輸出流 第八章 C+工具,4,實(shí)驗(yàn):共8次,每次2學(xué)時(shí),實(shí)驗(yàn)一:C+運(yùn)行環(huán)境、C+對(duì)C的擴(kuò)充 實(shí)驗(yàn)二:類與對(duì)象的定義和使用 實(shí)驗(yàn)三:類/對(duì)象的構(gòu)造和應(yīng)用 實(shí)驗(yàn)四:運(yùn)算符重載
2、實(shí)驗(yàn)五:繼承與派生 實(shí)驗(yàn)六:多態(tài)性與虛函數(shù) 實(shí)驗(yàn)七:輸入流/輸出流 實(shí)驗(yàn)八:C+工具、綜合應(yīng)用 開發(fā)環(huán)境:Windows環(huán)境下的Visual C+6.0,5,學(xué)時(shí)分配,總學(xué)時(shí):56 講課: 40學(xué)時(shí) 上機(jī): 16學(xué)時(shí) 課外上機(jī):每周不少于4學(xué)時(shí),6,參考書目(基本參考書): C+程序設(shè)計(jì)教程 楊國(guó)興 中國(guó)水利水電出版社 2006.6 Visual C+ 教程鄭阿奇 清華大學(xué)出版社 2005.7 Visual C+程序設(shè)計(jì)教程梁建武 水利水電出版社 Visual C+與面向?qū)ο蟪绦蛟O(shè)計(jì)教程(第二版)呂軍等 高等教育出版社,7,學(xué)習(xí)方法: 1、注意各章知識(shí)點(diǎn) 2、理解編程特例 3、強(qiáng)化實(shí)踐:類似實(shí)
3、驗(yàn)、進(jìn)行小改動(dòng)、注意不同程序的使用方法。,8,主要內(nèi)容:,1.1 從C到+ 1.2 最簡(jiǎn)單的C+程序 1.3 C+對(duì)C的擴(kuò)充 1.4 C+程序的編寫與實(shí)現(xiàn),第1章 C+初步知識(shí),9,1.1 從C到C+ (計(jì)算機(jī)語(yǔ)言的發(fā)展),機(jī)器語(yǔ)言 匯編語(yǔ)言 高級(jí)語(yǔ)言 第一代:科學(xué)計(jì)算 Fortran 、 ALgol 60 第二代:表達(dá)算法 Pascal 、 C 第三代:引入抽象數(shù)據(jù)類型 Ada 第四代:面向?qū)ο?Smalltalk、Eiffel、C+、Java,10,1.1 從C到C+ C語(yǔ)言特點(diǎn): 1、C語(yǔ)言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,語(yǔ)言本身簡(jiǎn)潔、使用靈活方便。 2、它既有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言
4、的特點(diǎn)。 3、目標(biāo)程序質(zhì)量高,程序執(zhí)行效率高。 4、程序的可移植性好。 5、程序的語(yǔ)法結(jié)構(gòu)不夠嚴(yán)密,程序設(shè)計(jì)的自由度大。既是優(yōu)點(diǎn)也是缺點(diǎn)。,11,1.1 從C到C+ 用C語(yǔ)言編寫的程序是面向過程的。程序員要熟悉程序運(yùn)行的每一個(gè)細(xì)節(jié),出現(xiàn)軟件危機(jī)。程序順序執(zhí)行,與現(xiàn)實(shí)世界的運(yùn)行模式不一致; 因此提出了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。為了支持這種程序設(shè)計(jì)方法,又由于C語(yǔ)言早已深入人心,因此C+語(yǔ)言應(yīng)運(yùn)而生。,12,C+對(duì)C的增強(qiáng),1、在面向過程的基礎(chǔ)上對(duì)C語(yǔ)言功能進(jìn)行擴(kuò)充。 2、增加面向?qū)ο蟮臋C(jī)制。,13,1.2 簡(jiǎn)單的C+程序舉例1:,#include Using namesapce std;/使用命名
5、空間 int main( ) cout“How are you! n”;/輸出字符串 return 0; ,主函數(shù),函數(shù)體開始,函數(shù)體結(jié)束,輸出流,在屏幕上打印引號(hào)內(nèi)的字符串,分號(hào),一條完整語(yǔ)句的結(jié)束符,本程序編譯執(zhí)行后,在屏幕上打印出: How are you!,包含文件,注釋或說明,14,#include int main( ) cout i; /從鍵盤上輸入變量i的值 cout “i的值為:”in; return 0; ,程序舉例2:從鍵盤上輸入i的值,并輸出i。,15,C+程序舉例3 -求兩數(shù)中的最大者,#include / 預(yù)編譯命令 using namespace std; int
6、 max(int x,int y); int main() / 主函數(shù) int a,b,c; cinab; c=max(a,b); couty) z=x; else z=y; return z; 注意:.cpp文件包含2個(gè)函數(shù) , 主函數(shù)mian調(diào)用max函數(shù) 。,16,C+程序舉例4 -包含類的C+程序,1、建立.h文件 aaa.h如下: class Student / 定義類st private : int num,score; / 類的私有的數(shù)據(jù)成員 public: void setdata() / 類的公有的成員函數(shù) cinnumscore; void display() / 類的公有
7、的成員函數(shù) cout“num=”numendl; cout“score=”scoreendl; ; / 類定義結(jié)束, 必須有“ ;”,17,C+程序舉例4(續(xù)),2、建立.cpp文件a1.cpp如下: #include using namespace std; #include “aaa.h” / 調(diào)用頭文件aaa.h Student st1,st2; / 定義變量st1、st2是Student類型變量,稱為對(duì)象 int main() / 主函數(shù) st1.setdata(); st2.setdata(); st1.display(); st2.display(); return 0; 注意:在
8、本例中,有源文件a1.cpp和頭文件 aaa .h,18,小結(jié): 在一個(gè)程序單位中,一般包括3部分: 1、 預(yù)處理命令:以符號(hào)“#”開頭的行,稱為編譯預(yù)處理行。 “#include” 稱為文件預(yù)處理命令。 “ #include ”是將文件 “iostream .h”的內(nèi)容包含到新建的程序中去。 iostream.h 是C+系統(tǒng)定義的一個(gè) “頭文件”, iostream.h中設(shè)置了C+的輸入/輸出 ( I / O ) 相關(guān)環(huán)境,定義了輸入流 cin 和輸出流 cout 對(duì)象。,19,2、全局聲明部分:在函數(shù)外的聲明部分,用戶自定義數(shù)據(jù)類型、程序中變量的定義,例如對(duì)類st的定義、對(duì)變量st1、st
9、2的定義。對(duì)函數(shù)的聲明例如:int max(int x,int y); 3、函數(shù):函數(shù)是程序中必須有的和最基本的組成部分。main( ) 是每一個(gè)C+程序都必須有的,稱為主函數(shù),它是程序入口。 注意1:main() 前的 int 表示主函數(shù) main( ) 返回值為整型?;ɡㄌ?hào) 括起為main()的函數(shù)體。 注意2:標(biāo)準(zhǔn)C+在main()正常執(zhí)行時(shí)返回0,否則返回-1。,20,1.3 C+對(duì)C的擴(kuò)充 1.3.1 C+輸入/輸出 1、cout 輸出: 格式:cout int main() cout “您好” endl; / “endl” 與“ n”一樣是控制換行。 return 0; 注意:每個(gè)
10、輸出項(xiàng)用一個(gè)“ ”符號(hào)分隔。,21,2、 cin 標(biāo)準(zhǔn)輸入 格式:cin 變量1 變量2 ; 例:使用cin進(jìn)行簡(jiǎn)單的輸入。 #include int main() int a,b; cin a b; cout a , b endl; return 0; ,22,1.3.2 用const定義常變量 在C語(yǔ)言中,宏定義如下: 1、不帶參宏定義: #define PI 3.14 /定義符號(hào)常量,實(shí)際編譯時(shí)只是字符置換。 2、帶參宏定義: #define 宏名(參數(shù)表) 字符串 /* 字符串中包含在括弧中指定的參數(shù) */,23,例: C語(yǔ)言宏定義應(yīng)用 #include #define PI 3.14
11、15926 #define S(r) PI*r*r /* 引用已定義的宏名PI */ main() double a,area; a=3.6; area=S(a); printf(r=%f,area=%f,a,area); 運(yùn)行結(jié)果: r=3.600000,area=40.715038 賦值語(yǔ)句areaS(a);經(jīng)宏展開后為 area=3.1415926*a*a;,24,說明: 若: #define S(r) PI*r*r 則: area=S(a+b); /* 相當(dāng)于area=PI*a+b*a+b */ 若: #define S(r) PI*(r)*(r) 則: area=S(a+b); /*
12、 相當(dāng)于area=PI*(a+b)*(a+b) */ 在C語(yǔ)言中: 用#define 定義符號(hào)常量,實(shí)際編譯時(shí)只是字符置換,易出錯(cuò)。,25,1.3.2 用const定義常變量 C+利用const定義常變量: const float PI=3.14; 說明:PI具有變量屬性,有數(shù)據(jù)類型,占存儲(chǔ)空間,有地址,可用指針指向它,但是程序運(yùn)行時(shí)其值是不可改變的。,26,1.3.3 函數(shù)原型聲明 在C+程序中,被調(diào)函數(shù)的定義可以放在主調(diào)函數(shù)之后,也可以放在主調(diào)函數(shù)之前。若被調(diào)函數(shù)的定義位于主調(diào)函數(shù)之后,則必須對(duì)被調(diào)用函數(shù)作聲明。 例如: int max(int x,int y); int max(int,
13、int);,27,函數(shù)聲明和定義的示例,#include float area( float ); / 調(diào)用函數(shù)前先聲明 int main( ) float radius; coutradius; if (radius0) coutarea(radius )endl; return 0; float area( float r) /最后定義 return r * r* 3.14159;,28,程序可以改為如下形式:,#include float area( float r) return r * r* 3.14159; Int main( ) float radius; coutradius;
14、 if (radius0) coutarea(radius )endl; return 0; ,29,1.3.4 函數(shù)重載,什么叫重載? 運(yùn)算符“”是位運(yùn)算左移運(yùn)算符,在C+中,又作為輸出算符;運(yùn)算符“*”是乘法算符,也是指針符號(hào)。這種一個(gè)標(biāo)識(shí)符有多種含義的現(xiàn)象叫“重載”。 如果標(biāo)識(shí)符為運(yùn)算符,就叫“運(yùn)算符重載”;如果標(biāo)識(shí)符為函數(shù)名,就叫“函數(shù)重載”。 什么時(shí)候用到重載? 用于相類似而又不同的操作。例如,求多個(gè)數(shù)值的最大數(shù),不同類型的參數(shù),C語(yǔ)言要編寫不同的函數(shù): int max1(int a, int b ,int c); / 3個(gè)整型數(shù)求最大值 float max2(float a, fl
15、oat b,float c); / 3個(gè)實(shí)型數(shù)求最大值 long max3(long a, long b,long c); / 3個(gè)長(zhǎng)整型數(shù)求最大值,30,即:C+允許在同一作用域中用同一函數(shù)名定義多個(gè)函數(shù),函數(shù)的參數(shù)類型和個(gè)數(shù)不同,這些同名函數(shù)實(shí)現(xiàn)不同功能-函數(shù)重載。,而C+的做法是重載:將這三個(gè)函數(shù)名取相同的名字,程序運(yùn)行時(shí),系統(tǒng)會(huì)根據(jù)實(shí)際參數(shù)的不同,調(diào)用相近參數(shù)的函數(shù):,31,#include int max(int a, int b, int c) if (ba) a=b; if (ca) a=c; return a; float max(float a, float b) if (b
16、a) a=b; return a; long max(long a, long b, long c) if (ba) a=b; if (ca) a=c; return a; ,int main( ) int a, b, c, d; float x, y, z; long m, n, p, q; cinabc; cinxy; cinmnp; d = max (a, b, c); cout “int_d = “dendl; z = max (x,y); cout “float_z = “zendl; q = max (m, n, p); cout “l(fā)ong_q = “qendl; return
17、0; ,main函數(shù)三次調(diào)用max函數(shù),每次實(shí)參的個(gè)數(shù)或類型不同,系統(tǒng)會(huì)尋找與之匹配的函數(shù)調(diào)用。,例如1.6:求3個(gè)數(shù)最大值(整數(shù)、實(shí)數(shù)),32,#include int max(int a, int b, int c) if (ba) a=b; if (ca) a=c; return a; int max(int a,int b) if (ab) return a; else return b; ,int main( ) int a=7,b=-4,c=9; cout max(a,b,c)endl; cout max(a,b)endl; return 0; ,例如1.7:求2個(gè)數(shù)或3個(gè)整數(shù)最大
18、值,main函數(shù)2次調(diào)用max函數(shù),每次實(shí)參的個(gè)數(shù)或類型不同,系統(tǒng)會(huì)尋找與之匹配的函數(shù)調(diào)用。 注意:不能出現(xiàn)函數(shù)名、參數(shù)個(gè)數(shù)、類型完全一致的函數(shù),33,1.3.5 函數(shù)模板 C+函數(shù)重載允許用同一函數(shù)名定義多個(gè)函數(shù),但是還要定義每一個(gè)函數(shù)。編碼量很大。 什么時(shí)候使用模板?對(duì)于有些相同功能的函數(shù),如果函數(shù)參數(shù)個(gè)數(shù)相同,可以用函數(shù)模板。,函數(shù)模板是定義一個(gè)通用函數(shù),其函數(shù)類型和形參類型不確定,用虛擬類型代表。 利用函數(shù)模板定義的函數(shù)叫做模板函數(shù)。,34,定義一個(gè)模板函數(shù)的形式如下: template () . 注意1:template 和 template 等價(jià) 注意2:類型參數(shù)可以不止一個(gè)如:
19、template 注意3:模板函數(shù)只適用于函數(shù)的參數(shù)個(gè)數(shù)相同而類型不同,而且函數(shù)體相同的情況。,35,#include template T max (T a, T b, T c) / 建立函數(shù)模板時(shí),只需要 if (ba) a=b; / 將函數(shù)類型、參數(shù)類型 int 換成 T 就行。 if (ca) a=c; / 即用虛擬的類型名T代替實(shí)際的類型 return a; int main( ) int i = 8, j = 3, k = 4, h; long m = 1, n = 2, p = 3, q; h = max ( i, j, k); q = max ( m, n, p); cout
20、“int_h = “hendl; cout “l(fā)ong_q = “qendl; return 0; ,示例:將上述重載示例改為函數(shù)模板。,36,結(jié)論:函數(shù)模板比函數(shù)重載更方便,但模板只適用于函數(shù)的參數(shù)個(gè)數(shù)相同而類型不同,且函數(shù)體相同的情況。不滿足這種情況時(shí),就只能使用函數(shù)重載。,37,特例: 定義一個(gè)求數(shù)值絕對(duì)值的模板函數(shù)。 #include template T max(T a) return a0?a:-a; int main() cout max(-9)= max(-9) endl; cout max(-9.666)= max(-9.666) endl; cout max(12345)=
21、 max(12345) endl; return 0; ,38,1.3.6 有默認(rèn)參數(shù)的函數(shù),背景:一般情況下,函數(shù)調(diào)用時(shí),形參從實(shí)參取值。要求實(shí)參的個(gè)數(shù)和類型與形參相同。但有時(shí)多次調(diào)用同一函數(shù)時(shí)用的是同樣的實(shí)參值。C+提供一個(gè)簡(jiǎn)單的解決辦法,即給參數(shù)一默認(rèn)值。 若不提供實(shí)參數(shù),形參就用默認(rèn)參數(shù)作為實(shí)參值。 示例:有一函數(shù)聲明如下: float area ( float r=6.5 ); 調(diào)用area 函數(shù)時(shí),如果不提供實(shí)參給r,r 就以默認(rèn)數(shù)值 6.5 作為參數(shù)調(diào)用area: 即: area ( ); / 相當(dāng)于 area (6.5 );,39,注意: 1) 當(dāng)有多個(gè)參數(shù)時(shí),如果只有部分參數(shù)
22、有默認(rèn)值,則指定默認(rèn)值的參數(shù)必須放在參數(shù)表的最右邊,否則出錯(cuò)。 2)因?yàn)閷?shí)參與形參的結(jié)合是從左至右順序進(jìn)行的,第一個(gè)實(shí)參必須給第一個(gè)形參,第二個(gè)實(shí)參必須給第二個(gè)形參。 3) 一個(gè)函數(shù)不能既作為重載函數(shù),又作為默認(rèn)參數(shù)函數(shù)。因?yàn)楫?dāng)調(diào)用函數(shù)時(shí)如果少寫一實(shí)參,系統(tǒng)無法判斷是利用重載函數(shù)還是利用默認(rèn)參數(shù)函數(shù)。,40,例如函數(shù)聲明如下: void area (float x1, int x2 = 1, char x3 = a); 調(diào)用1:area ( 1.2, 3, b); / 形參值全部由實(shí)參得到 調(diào)用2:area (1.2, 3); / 最后一個(gè)參數(shù)取自默認(rèn)值 調(diào)用3:area (1.2 ); /
23、最后兩個(gè)參數(shù)取自默認(rèn)值 調(diào)用4: area ( ); / 出錯(cuò),第一個(gè)形參沒有實(shí)參,也沒有默 認(rèn)值,41,舉例: 利用默認(rèn)參數(shù)的函數(shù)實(shí)現(xiàn)求2個(gè)或3個(gè)整數(shù)的最大值,#include int max(int a,int b,int c=-32767) if (ba) a=b; if (ca) a=c; return a; void main( ) int a,b,c,mab,mabc; a=10; b=100; c=900; mab=max(a,b); couta b mabendl; mabc=max(a,b,c); couta b c mabcendl; ,42,/ 函數(shù)模板和默認(rèn)參數(shù)綜合舉例
24、 #include template T max(T a,T b,T c=-32767,T d=-32767) if (ba) a=b; if (ca) a=c; if (da) a=d; return a; void main( ) int a,b,c,mab,mabc,mabcd,d; a=10; b=100; c=900,d=8888; mab=max(a,b); couta b mabendl; mabc=max(a,b,c); couta b c mabcendl; mabcd=max(a,b,c,d); couta b c mabcdendl; float a1,b1,c1,mab
25、1,mabc1,mabcd1,d1; a1=10.0; b1=100.9; c1=900.98,d1=8888.99; mab1=max(a1,b1); couta1 b1 mab1endl; mabc1=max(a1,b1,c1); couta1 b1 c1 mabc1endl; mabcd1=max(a1,b1,c1,d1); couta1 b1 c1 d1 mabcd1endl; ,43,1.3.7 變量的引用,1、什么叫引用?變量的引用就是變量的別名。建立引用的作用,是為一個(gè)變量另取一個(gè)名字,以便在需要的時(shí)候間接地引用該變量。 2、引用示例: #include int main( )
26、int a = 10; int 運(yùn)行結(jié)果:a = 100 b= 100,44,1.3.7 變量的引用,3、如何使用引用?如有變量a ,給它另取一個(gè)別名b : int a ;int / 聲明b 是一個(gè)整型變量的引用變量,并且被初始化為a 說明: 1)此處 int / 錯(cuò)誤, 沒有指定 x 代表哪個(gè)變量,46,4、將引用作為函數(shù)參數(shù):C+之所以增加“引用”,主要是利用它作為函數(shù)參數(shù),以擴(kuò)充函數(shù)傳遞數(shù)據(jù)的功能。 C語(yǔ)言中,函數(shù)的參數(shù)傳遞有以下兩種情況: 1)將變量名作為實(shí)參:傳給形參的是變量的值,傳遞是單向的,函數(shù)運(yùn)行時(shí),形參發(fā)生變化,并不回傳給實(shí)參。因?yàn)樾螀⒑蛯?shí)參不是同一個(gè)存儲(chǔ)單元。例:,#inc
27、lude void swap ( int a, int b ) int temp; temp = a; a = b; b = temp; ,int main( ) int i=3, j=5; swap ( i, j ); couti“,”jendl; return 0; 運(yùn)行結(jié)果,i, j 仍然是3,5。 沒有發(fā)生交換。,47,2)傳遞變量的指針:傳給形參的是變量的地址,形參得到一個(gè)變量的地址,即形參指針變量指向?qū)崊⒆兞繂卧?。函?shù)中形參發(fā)生改變,實(shí)際上是改變實(shí)參。這種方法實(shí)際上仍然是值傳遞:向指針變量傳遞地址值。然后通過指針變量訪問有關(guān)變量?!伴g接地”回傳了改變的變量。例:,#include
28、void swap ( int *p1, int *p2 ) int temp; temp = *p1; *p1 = *p2; *p2 = temp; ,int main( ) int i=3, j=5; swap ( 運(yùn)行結(jié)果,i, j 是5,3。 變量值發(fā)生交換。,48,3)傳遞變量的別名:將變量的引用作為函數(shù)形參,彌補(bǔ)了上面兩種方法的不足。例: 注意:swap函數(shù)形參 swap ( i, j ); couti“,”jendl; return 0; 運(yùn)行結(jié)果,i, j 是5,3。 變量值發(fā)生交換。,49,如何理解引用?我們從物理實(shí)現(xiàn)上來理解,引用是一個(gè)隱性指針,即引用值是引自所指向的實(shí)體。
29、這就是引用的真意。高級(jí)編程(面向應(yīng)用)多用引用,低級(jí)編程(面向機(jī)器)多用指針。,50,5、對(duì)引用的說明: 1)不能建立void類型的引用。因?yàn)槿魏螌?shí)際存在的變量都屬于非void類型。如: void / t 是指向整型變量的指針變量的引用,初始化為p.,51,4)可以將引用的地址賦給指針。此時(shí),指針指向原來變量: int a = 3;int /合法,52,1、引入原因:目的是為了解決程序中函數(shù)調(diào)用的效率問題。有些函數(shù)代碼很短(行),卻有高使用頻率,造成處理現(xiàn)場(chǎng)的開銷巨增。 這時(shí)若將函數(shù)體嵌入函數(shù)調(diào)用處,則可避免每次調(diào)用函數(shù)的開銷,大大提高效率。,1.3.8 內(nèi)聯(lián)函數(shù)(inline functio
30、n),53,2、內(nèi)聯(lián)函數(shù)的定義:在聲明一個(gè)函數(shù)時(shí),加上限定詞inline,該函數(shù)就成為內(nèi)聯(lián)函數(shù)。編譯時(shí),系統(tǒng)將調(diào)用此函數(shù)的地方用函數(shù)的原代碼替換。即以空間代價(jià)換取時(shí)間。例如: #include / c1.15 inline int power(int x ) / 定義一個(gè)內(nèi)聯(lián)函數(shù) return x*x; int main( ) cout power ( 2 ) endl; / 編譯系統(tǒng)展開為x=2;x*x; cout power ( 1+2 ) endl; / 編譯系統(tǒng)展開為x=1+2;x*x; return 0; 運(yùn)行結(jié)果:4 9,54,3、內(nèi)聯(lián)函數(shù)的限制: 1)函數(shù)內(nèi)不能含有循環(huán)結(jié)構(gòu)或sw
31、itch結(jié)構(gòu); 2)不能含有任何靜態(tài)數(shù)據(jù)及數(shù)組聲明。 3)不能是遞歸函數(shù)。,說明: 如果內(nèi)聯(lián)函數(shù)內(nèi)有以上問題,在VC+上編譯也能通過,是因?yàn)榫幾g器將它改成非inline的了。即我們只有建議內(nèi)聯(lián)的權(quán)利,是否真的實(shí)現(xiàn)內(nèi)聯(lián)還要由編譯器決定。,55,標(biāo)識(shí)符只能在說明它或定義它的范圍內(nèi)是可見的,而在該范圍之外是不可見的。 每一個(gè)變量都有自己的有效范圍。只能在變量的作用域內(nèi)使用該變量。不能直接使用其它作用域中的變量。如果要使用其它作用域中的同名變量,必須使用“作用域運(yùn)算符”,即“ : ”。,1.3.9 作用域運(yùn)算符,56,作用域運(yùn)算符示例: #include /c1.16 float a=1.5; int
32、 main( ) int a = 5; cout a endl; / 輸出作用域?yàn)閙ain 函數(shù)的局部變量a 的值 cout :a endl; / 輸出作用域?yàn)槿值?全局變量a 的值 return 0; 運(yùn)行結(jié)果:5 1.5 注意:不能用作用域運(yùn)算符“:”訪問函數(shù)中的局部變量。,57,局部變量和全局變量,1、局部變量 指作用域在函數(shù)級(jí)的變量。 2、全局變量 指作用域在程序級(jí)和文件級(jí)的變量。,58,#include int i=5; /外部全局變量 void func( ) cout iendl; / 輸出全局變量i void main() int i=3; / 內(nèi)部局部變量 func( );
33、 cout iendl; / 輸出局部變量i ,局部 變量,全局變量,藍(lán)色為文件作用域,綠色為函數(shù)作用域,59,1.3.10 字符串變量,C+提供了字符串類。利用此類可以定義字符串對(duì)象。但在文件開頭必須包含string庫(kù): #include / 不能是string.h,必須用using namespace std; 1、字符串定義: string s1; / 定義字符串變量s1 string s2 = “China”; / 定義字符串變量s2并初始化,60,1.3.10 字符串變量,2、字符串賦值:可以對(duì)定義了的字符串變量進(jìn)行賦值: s1 = “Hello”;s2 = s1; s3 = s1+
34、s2; / 字符串連接 3、字符串變量的輸入輸出: string c1;cin c1;cout =,= 來進(jìn)行字符串的比較,61,5、字符串?dāng)?shù)組: C+允許直接定義字符串?dāng)?shù)組如: string name 3 = “張三”,”李四”,”王五”; 結(jié)果為: name 0 = “張三“; name 1 = “李四”; name 2 = “王五”;,62,字符串變量示例:從鍵盤輸入3個(gè)字符串,并按字典順序輸出: #include / c1.17 #include using namespace std; int main( ) string s1,s2,s3,temp; cin s1s2s3; if ( s2s3) temp =s2; s2 = s3; s3 = temp; if ( s1s2) temp =s1; s1 = s2; s2 = temp; if ( s2s3) temp =s2; s2 = s3; s3 = temp; cout
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年四川營(yíng)華物業(yè)管理有限公司招聘工作人員的備考題庫(kù)及1套參考答案詳解
- 2026年臺(tái)州市科技館公開招聘編制外勞動(dòng)合同人員的備考題庫(kù)及答案詳解一套
- 2026年雙河市政匯通商貿(mào)有限責(zé)任公司面向社會(huì)招聘會(huì)計(jì)的備考題庫(kù)及參考答案詳解
- 2026年北京經(jīng)濟(jì)技術(shù)開發(fā)區(qū)教育領(lǐng)域面向應(yīng)屆畢業(yè)生公開招聘事業(yè)單位工作人員29人備考題庫(kù)有答案詳解
- 2026年天津旭成科技發(fā)展有限公司招聘?jìng)淇碱}庫(kù)帶答案詳解
- 2026年中國(guó)科學(xué)技術(shù)大學(xué)英語(yǔ)教師招聘?jìng)淇碱}庫(kù)完整答案詳解
- 2026年臨床醫(yī)學(xué)研究所占美曉團(tuán)隊(duì)科研助理招聘?jìng)淇碱}庫(kù)及一套答案詳解
- 2026年四川筑臻勞務(wù)服務(wù)有限公司關(guān)于公開招聘勞務(wù)派遣人員的備考題庫(kù)及一套答案詳解
- 2026年廣東省陽(yáng)江市“百萬(wàn)英才匯南粵”招聘事業(yè)單位高層次(急需緊缺)人才32人備考題庫(kù)及答案詳解1套
- 2026年廊坊文安縣中醫(yī)院面向社會(huì)招聘臨時(shí)工作人員備考題庫(kù)及參考答案詳解1套
- 2025年(完整)《公共基礎(chǔ)知識(shí)》考試題庫(kù)附答案
- 2025貴州銅仁市“千名英才·智匯銅仁”本地引才413人考試題庫(kù)附答案
- 山西省2026屆高三第一次八省聯(lián)考語(yǔ)文(T8聯(lián)考)(含答案)
- 2025年杭州余杭水務(wù)有限公司招聘36人參考筆試題庫(kù)及答案解析
- 2025山東聊城市市屬事業(yè)單位定向招聘隨軍未就業(yè)家屬8人備考核心試題附答案解析
- 急危重癥護(hù)理進(jìn)展
- 2026年江西應(yīng)用技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試必刷測(cè)試卷附答案
- 【語(yǔ)文】江蘇省南京市瑞金北村小學(xué)小學(xué)五年級(jí)上冊(cè)期末試題(含答案)
- 《勞動(dòng)與社會(huì)保障法》期末試題
- 電廠裝置性違章培訓(xùn)課件
- 2025年艾滋病防治知識(shí)暨反歧視培訓(xùn)試題及答案
評(píng)論
0/150
提交評(píng)論