版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、作用域與可見(jiàn)性作用域與可見(jiàn)性對(duì)象的生存期對(duì)象的生存期數(shù)據(jù)與函數(shù)數(shù)據(jù)與函數(shù)靜態(tài)成員靜態(tài)成員共享數(shù)據(jù)的保護(hù)共享數(shù)據(jù)的保護(hù)友元友元編譯預(yù)處理命令編譯預(yù)處理命令多文件結(jié)構(gòu)和工程多文件結(jié)構(gòu)和工程5-1-1 標(biāo)識(shí)符作用域標(biāo)識(shí)符作用域 1函數(shù)原型作用域函數(shù)原型作用域 例如,以下函數(shù)原型編譯器認(rèn)為是相同的:例如,以下函數(shù)原型編譯器認(rèn)為是相同的:double funPrototype ( double , double ) ;double funPrototype ( double a , double b ) ;double funPrototype ( double x , double y ) ; 函數(shù)原
2、型形式參數(shù)表中的標(biāo)識(shí)符具有函數(shù)原型作用域函數(shù)原型形式參數(shù)表中的標(biāo)識(shí)符具有函數(shù)原型作用域 作用域作用域指標(biāo)識(shí)符能夠被使用的范圍。只有在作用域內(nèi)標(biāo)識(shí)符才可以被指標(biāo)識(shí)符能夠被使用的范圍。只有在作用域內(nèi)標(biāo)識(shí)符才可以被訪問(wèn)(稱(chēng)為可見(jiàn))。訪問(wèn)(稱(chēng)為可見(jiàn))。 函數(shù)原型中的參數(shù),其作用域始于函數(shù)原型中的參數(shù),其作用域始于(,結(jié)束于,結(jié)束于)。 例如,設(shè)有下列原型聲明:例如,設(shè)有下列原型聲明:double Area(double radius);double Area(double radius);radius 的作用域僅在于此,不能用于程序正文其他地方,因而可有可無(wú)。2塊作用域塊作用域 在語(yǔ)句塊中聲明的標(biāo)識(shí)符
3、具有塊作用域在語(yǔ)句塊中聲明的標(biāo)識(shí)符具有塊作用域 / 例例 不同作用域的同名變量不同作用域的同名變量#includeusing namespace std ;int main() int a = 1;/ 外層的外層的a int a = 1 ;/ 內(nèi)層的內(nèi)層的a a + ; cout inside a = a endl ; / 內(nèi)層的內(nèi)層的a作用域結(jié)束作用域結(jié)束cout outside a = a endl ;/ 外層的外層的a作用域結(jié)束作用域結(jié)束2塊作用域塊作用域 在語(yǔ)句塊中聲明的標(biāo)識(shí)符具有塊作用域在語(yǔ)句塊中聲明的標(biāo)識(shí)符具有塊作用域 / 例例3-25 不同作用域的同名變量不同作用域的同名變量#i
4、ncludeusing namespace std ;int main() int = 1;/ 外層的外層的a int a = 1 ;/ 內(nèi)層的內(nèi)層的a a + ; cout inside a = a endl ; / 內(nèi)層的內(nèi)層的a作用域結(jié)束作用域結(jié)束cout outside a = M4類(lèi)作類(lèi)作用域用域 5文件作用域文件作用域 任何在函數(shù)之外聲明的標(biāo)識(shí)符具有文件作用域任何在函數(shù)之外聲明的標(biāo)識(shí)符具有文件作用域 這種標(biāo)識(shí)符從聲明處起至文件尾的任何函數(shù)都可見(jiàn)這種標(biāo)識(shí)符從聲明處起至文件尾的任何函數(shù)都可見(jiàn) / 例例 使用文件作用域變量使用文件作用域變量#include using namespace
5、 std ;int a = 1, b = 1 ;void f1( int x ) a = x * x ; b = a * x ;int c ; void f2( int x, int y ) a = x y ? x : y ; b = x y ? x : y ; c = x + y ; int main() f1( 4 ) ; cout call function f1 :n ; cout a = a , b = b endl ; f2 (10, 23 ) ; cout call function f2 :n ; cout a = a , b = b , c = c endl ;/ 例例 使用
6、文件作用域變量使用文件作用域變量#include using namespace std ;int a = 1, b = 1 ;void f1( int x ) a = x * x ; b = a * x ;int c ; void f2( int x, int y ) a = x y ? x : y ; b = x y ? x : y ; c = x + y ; int main() f1( 4 ) ; cout call function f1 :n ; cout a = a , b = b endl ; f2 (10, 23 ) ; cout call function f2 :n ;
7、cout a = a , b = b , c = endl ;/ a, b的作用域從這里開(kāi)始的作用域從這里開(kāi)始/ f1函數(shù)可以訪問(wèn)函數(shù)可以訪問(wèn)a,b/ f2函數(shù)可以訪問(wèn)函數(shù)可以訪問(wèn)a, b/ main 函數(shù)可以訪問(wèn)函數(shù)可以訪問(wèn)a, b/ 例例 使用文件作用域變量使用文件作用域變量#include using namespace std ;int a = 1, b = 1 ;void f1( int x ) a = x * x ; b = a * x ;int c ; void f2( int x, int y ) a = x y ? x : y ; b = x y ? x : y ; c =
8、x + y ; int main() f1( 4 ) ; cout call function f1 :n ; cout a = a , b = b endl ; f2 (10, 23 ) ; cout call function f2 :n ; cout a = a , b = b , c = endl ;/ a, b的作用域從這里開(kāi)始的作用域從這里開(kāi)始/ f1函數(shù)可以訪問(wèn)函數(shù)可以訪問(wèn)a,b/ f2函數(shù)可以訪問(wèn)函數(shù)可以訪問(wèn)a, b/ main 函數(shù)可以訪問(wèn)函數(shù)可以訪問(wèn)a, b/ 的作用域從這里開(kāi)始,默認(rèn)初始值為的作用域從這里開(kāi)始,默認(rèn)初始值為0/ f2函數(shù)可以訪問(wèn)函數(shù)可以訪問(wèn)a, b, /
9、main 函數(shù)可以訪問(wèn)函數(shù)可以訪問(wèn)a, b, 6全局變量和局部變量全局變量和局部變量 具有文件作用域的變量稱(chēng)為全局變量;具有函數(shù)作用域具有文件作用域的變量稱(chēng)為全局變量;具有函數(shù)作用域 或塊作用域的變量稱(chēng)為局部變量或塊作用域的變量稱(chēng)為局部變量 全局變量聲明時(shí)默認(rèn)初始值為全局變量聲明時(shí)默認(rèn)初始值為0 0 當(dāng)局部量與全局量同名,在塊內(nèi)當(dāng)局部量與全局量同名,在塊內(nèi)全局量全局量 為了在塊內(nèi)訪問(wèn)全局量,可以用域運(yùn)算符為了在塊內(nèi)訪問(wèn)全局量,可以用域運(yùn)算符 : : 6全局變量和局部變量全局變量和局部變量 / 在函數(shù)體內(nèi)訪問(wèn)全局變量在函數(shù)體內(nèi)訪問(wèn)全局變量#includeusing namespace std ;
10、int x ;int main() int x = 256 ; cout global variable x = :x endl ; cout local variable x = x endl ;6全局變量和局部變量全局變量和局部變量 / 在函數(shù)體內(nèi)訪問(wèn)全局變量在函數(shù)體內(nèi)訪問(wèn)全局變量#includeusing namespace std ;int ;int main() int x = 256 ; cout global variable x = endl ; cout local variable x = x endl ;訪問(wèn)全局量訪問(wèn)全局量6全局變量和局部變量全局變量和局部變量 / 在函
11、數(shù)體內(nèi)訪問(wèn)全局變量在函數(shù)體內(nèi)訪問(wèn)全局變量#includeusing namespace std ;int x ;int main() int = 256 ; cout global variable x = :x endl ; cout local variable x = endl ;訪問(wèn)局部量訪問(wèn)局部量6全局變量和局部變量全局變量和局部變量 / 在函數(shù)體內(nèi)訪問(wèn)全局變量在函數(shù)體內(nèi)訪問(wèn)全局變量#includeusing namespace std ;int x ;int main() int x = 256 ; cout global variable x = :x endl ; cout l
12、ocal variable x = x endl ;7 命命名空間名空間 命名空間是類(lèi)、函數(shù)、對(duì)象、類(lèi)型和其他名字的集合。命名空間是類(lèi)、函數(shù)、對(duì)象、類(lèi)型和其他名字的集合。 命名空間令軟件組件之間不會(huì)產(chǎn)生命名沖突。命名空間令軟件組件之間不會(huì)產(chǎn)生命名沖突。 std是是C+的標(biāo)準(zhǔn)名空間,包含了標(biāo)準(zhǔn)頭文件中各種名字的聲明。的標(biāo)準(zhǔn)名空間,包含了標(biāo)準(zhǔn)頭文件中各種名字的聲明。 標(biāo)標(biāo)準(zhǔn)名空間準(zhǔn)名空間 C+標(biāo)準(zhǔn)頭文件沒(méi)有擴(kuò)展名。標(biāo)準(zhǔn)頭文件沒(méi)有擴(kuò)展名。iostream iomanip limit fstream string typeinfo stdexcept 使用標(biāo)準(zhǔn)類(lèi)庫(kù)的組件時(shí),需要指定名空間。使用標(biāo)準(zhǔn)類(lèi)庫(kù)
13、的組件時(shí),需要指定名空間。 C+標(biāo)準(zhǔn)名空間標(biāo)準(zhǔn)名空間 std/方法一:方法一:#includeusing namespace std;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /方法一:方法一:#includeusing namespace std;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /包含頭文件包含頭文件/方法一:方法一:#includeusing namespace std;int main() int a, b; cin
14、a; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /包含頭文件/使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間std/方法一:方法一:#includeusing namespace std;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /包含頭文件/使用標(biāo)準(zhǔn)名空間std/使用使用std的元素的元素cin/方法一:方法一:#includeusing namespace std;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /包含頭文件
15、/使用標(biāo)準(zhǔn)名空間std/使用std的元素cin/使用使用std的元素的元素cout/方法一:方法一:#includeusing namespace std;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /包含頭文件包含頭文件/指定使用名空間指定使用名空間std/使用使用std的元素的元素cin/使用使用std的元素的元素cin/使用使用std的元素的元素cout/方法二:方法二:#includeusing std:cin; using std:cout;int main() int a, b; cina; cinb;
16、 couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /方法二:方法二:#includeusing std:cin; using std:cout;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /指定使用指定使用std的元素的元素cin /方法二:方法二:#includeusing std:cin; using std:cout;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /指定使用std的元素cin /指定使用指定使用std的元素
17、的元素cout /方法二:方法二:#includeusing std:cin; using std:cout;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /指定使用std的元素cin /指定使用std的元素cout /使用使用std的元素的元素cin/方法二:方法二:#includeusing std:cin; using std:cout;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /指定使用std的元素cin /指定使用std的元素
18、cout /使用std的元素cin/使用使用std的元素的元素cout/方法二:方法二:#includeusing std:cin; using std:cout;int main() int a, b; cina; cinb; couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /指定使用指定使用std的元素的元素cin /指定使用指定使用std的元素的元素cout /使用使用std的元素的元素cin/使用使用std的元素的元素cout/方法三:方法三:#includeint main() int a, b; std:cina; std:cinb; std:couta+b=a+bn;
19、使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /方法三:方法三:#includeint main() int a, b; std:cina; std:cinb; std:couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /指定使用指定使用std的元素的元素cin /方法三:方法三:#includeint main() int a, b; std:cina; std:cinb; std:couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /指定使用指定使用std的元素的元素cin /指定使用指定使用std的元素的元素cout /方法三:方法三:#includeint main() int a, b
20、; std:cina; std:cinb; std:couta+b=a+bn; 使用標(biāo)準(zhǔn)名空間使用標(biāo)準(zhǔn)名空間 /指定使用指定使用std的元素的元素cin /指定使用指定使用std的元素的元素cout 定定義名空間義名空間 定義命名空間語(yǔ)法:定義命名空間語(yǔ)法:namespace namespace A void f(); void g(); namespace B void h(); namespace C /嵌套命名空間嵌套命名空間 void i(); namespace A /為為namespace A追加說(shuō)明追加說(shuō)明 void j(); 定義名空間定義名空間定義命名空間語(yǔ)法:定義命名空間語(yǔ)
21、法:using namespace 名空間名空間 ;或或using 名空間名空間:元素元素 ;/例例 演示命名空間的使用演示命名空間的使用 #includeusing namespace std;namespace A void f() cout f() : from namespace An; void g() cout g() : from namespace An ; namespace B void f() cout f() : from namespace Bn ; namespace C void f() cout f() : from namespace Cn ; void g(
22、) cout g() : from global namespace“ endl ;int main() g() ; using namespace A; f() ; B:f() ; B:C:f() ; A:g() ;調(diào)用非命名空間調(diào)用非命名空間函數(shù)函數(shù)g() 使用命名空間使用命名空間A調(diào)用命名空間調(diào)用命名空間函數(shù)函數(shù)A:g() 調(diào)用函數(shù)調(diào)用函數(shù)A:B:f() 調(diào)用函數(shù)調(diào)用函數(shù)A:B:C:f() 調(diào)用函數(shù)調(diào)用函數(shù)A:g() 2可見(jiàn)性可見(jiàn)性 可見(jiàn)性可見(jiàn)性從另一個(gè)角度說(shuō)明標(biāo)識(shí)符的有效性,可見(jiàn)性與作用域具從另一個(gè)角度說(shuō)明標(biāo)識(shí)符的有效性,可見(jiàn)性與作用域具有一定的一致性。有一定的一致性。標(biāo)識(shí)符的作用域包
23、含可見(jiàn)范圍,可見(jiàn)范圍不標(biāo)識(shí)符的作用域包含可見(jiàn)范圍,可見(jiàn)范圍不會(huì)超過(guò)作用域會(huì)超過(guò)作用域??梢?jiàn)性在理解同名標(biāo)識(shí)符的??梢?jiàn)性在理解同名標(biāo)識(shí)符的作用域嵌套作用域嵌套時(shí)十分時(shí)十分直觀。直觀。對(duì)于外層塊與內(nèi)層塊定義了同名標(biāo)識(shí)符的,在外層作用域中,對(duì)于外層塊與內(nèi)層塊定義了同名標(biāo)識(shí)符的,在外層作用域中,內(nèi)層所定義的標(biāo)識(shí)符是不可見(jiàn)的,即外層引用的是外層所定義內(nèi)層所定義的標(biāo)識(shí)符是不可見(jiàn)的,即外層引用的是外層所定義的標(biāo)識(shí)符;同樣,的標(biāo)識(shí)符;同樣,在內(nèi)層作用域中,外層的標(biāo)識(shí)符將被內(nèi)層的在內(nèi)層作用域中,外層的標(biāo)識(shí)符將被內(nèi)層的同名標(biāo)識(shí)符屏蔽,變得不可見(jiàn)同名標(biāo)識(shí)符屏蔽,變得不可見(jiàn),即外層中同名標(biāo)識(shí)符的可見(jiàn)范,即外層中同名標(biāo)
24、識(shí)符的可見(jiàn)范圍為作用域中挖去內(nèi)層塊的范圍。圍為作用域中挖去內(nèi)層塊的范圍。2可見(jiàn)性可見(jiàn)性 下面的程序段和圖示顯示作用域與下面的程序段和圖示顯示作用域與可見(jiàn)性??梢?jiàn)性。 int m=1;float x; float m=3.5; X=5.5;m+; int m, float x作用域作用域int m可見(jiàn)可見(jiàn)float m不可見(jiàn)不可見(jiàn)x可見(jiàn)可見(jiàn)float m作用域作用域float m可見(jiàn)可見(jiàn)int m不可見(jiàn)不可見(jiàn)x可見(jiàn)可見(jiàn) 5-2 生命期生命期 生命期(生命期(Life timeLife time)也叫生存期。生命期與存儲(chǔ)區(qū)域相關(guān),)也叫生存期。生命期與存儲(chǔ)區(qū)域相關(guān),存儲(chǔ)區(qū)域分為代碼區(qū)、靜態(tài)數(shù)據(jù)區(qū)、
25、棧區(qū)和堆區(qū),相應(yīng)地,存儲(chǔ)區(qū)域分為代碼區(qū)、靜態(tài)數(shù)據(jù)區(qū)、棧區(qū)和堆區(qū),相應(yīng)地,生命期分為生命期分為靜態(tài)生命期、局部生命期和動(dòng)態(tài)生命期靜態(tài)生命期、局部生命期和動(dòng)態(tài)生命期。(1)靜態(tài)生命期靜態(tài)生命期 靜態(tài)生命期靜態(tài)生命期指的是標(biāo)識(shí)符從程序開(kāi)始運(yùn)行時(shí)指的是標(biāo)識(shí)符從程序開(kāi)始運(yùn)行時(shí)存在,即具有存儲(chǔ)空間,到程序運(yùn)行結(jié)束時(shí)消亡,存在,即具有存儲(chǔ)空間,到程序運(yùn)行結(jié)束時(shí)消亡,即釋放存儲(chǔ)空間。具有靜態(tài)生命期的標(biāo)識(shí)符存放即釋放存儲(chǔ)空間。具有靜態(tài)生命期的標(biāo)識(shí)符存放在靜態(tài)數(shù)據(jù)區(qū),屬于靜態(tài)存儲(chǔ)類(lèi)型,如全局變量、在靜態(tài)數(shù)據(jù)區(qū),屬于靜態(tài)存儲(chǔ)類(lèi)型,如全局變量、靜態(tài)全局變量、靜態(tài)局部變量。靜態(tài)全局變量、靜態(tài)局部變量。具有靜態(tài)生命期具有
26、靜態(tài)生命期的標(biāo)識(shí)符在未被用戶(hù)初始化的情況下,系統(tǒng)會(huì)自的標(biāo)識(shí)符在未被用戶(hù)初始化的情況下,系統(tǒng)會(huì)自動(dòng)將其初始化為全動(dòng)將其初始化為全0 0。 函數(shù)駐留在代碼區(qū),也具有靜態(tài)生命期。所函數(shù)駐留在代碼區(qū),也具有靜態(tài)生命期。所有具有文件作用域的標(biāo)識(shí)符都具有靜態(tài)生命期。有具有文件作用域的標(biāo)識(shí)符都具有靜態(tài)生命期。(2)局部生命期局部生命期 在函數(shù)內(nèi)部或塊中定義的標(biāo)識(shí)符具有局部生命在函數(shù)內(nèi)部或塊中定義的標(biāo)識(shí)符具有局部生命期,其生命期開(kāi)始于執(zhí)行到該函數(shù)或塊的標(biāo)識(shí)符聲期,其生命期開(kāi)始于執(zhí)行到該函數(shù)或塊的標(biāo)識(shí)符聲明處,結(jié)束于該函數(shù)或塊的結(jié)束處。具有靜態(tài)生命明處,結(jié)束于該函數(shù)或塊的結(jié)束處。具有靜態(tài)生命期的標(biāo)識(shí)符存放在棧區(qū)
27、。期的標(biāo)識(shí)符存放在棧區(qū)。具有局部生命期的標(biāo)識(shí)符具有局部生命期的標(biāo)識(shí)符如果未被初始化,其內(nèi)容是隨機(jī)的,不可用如果未被初始化,其內(nèi)容是隨機(jī)的,不可用。 具有局部生命期的標(biāo)識(shí)符必定具有局部作用域;具有局部生命期的標(biāo)識(shí)符必定具有局部作用域;但反之不然,但反之不然,靜態(tài)局部變量具有局部作用域,但卻靜態(tài)局部變量具有局部作用域,但卻具有靜態(tài)生命期具有靜態(tài)生命期。(3)動(dòng)態(tài)生命期動(dòng)態(tài)生命期 具有動(dòng)態(tài)生命期的標(biāo)識(shí)符由特定的函數(shù)調(diào)具有動(dòng)態(tài)生命期的標(biāo)識(shí)符由特定的函數(shù)調(diào)用或運(yùn)算來(lái)創(chuàng)建和釋放用或運(yùn)算來(lái)創(chuàng)建和釋放,如調(diào)用,如調(diào)用mallocmalloc()()或用或用newnew運(yùn)算符為變量分配存儲(chǔ)空間時(shí),變量的生命運(yùn)算
28、符為變量分配存儲(chǔ)空間時(shí),變量的生命期開(kāi)始,而調(diào)用期開(kāi)始,而調(diào)用free()free()或用或用deletedelete運(yùn)算符釋放運(yùn)算符釋放空間或程序結(jié)束時(shí),變量生命期結(jié)束。具有動(dòng)空間或程序結(jié)束時(shí),變量生命期結(jié)束。具有動(dòng)態(tài)生命期的變量存放在堆區(qū)。關(guān)于態(tài)生命期的變量存放在堆區(qū)。關(guān)于newnew運(yùn)算和運(yùn)算和deletedelete運(yùn)算將在指針一章中介紹。運(yùn)算將在指針一章中介紹。 #includevoid fun();int main() fun(); fun();void fun() static int a=1; int i=5; a+; i+; couti=i,a=aendl;運(yùn)行結(jié)果:i=6,
29、 a=2i=6, a=3i是動(dòng)態(tài)生存期a是靜態(tài)生存期例5-2 變量的生存期與可見(jiàn)性#includeint i=1; / i 為全局變量,具有靜態(tài)生存期。int main() static int a;/ 靜態(tài)局部變量,有全局壽命,局部可見(jiàn)。 int b=-10; / b, c為局部變量,具有動(dòng)態(tài)生存期。 int c=0; void other(void); cout-MAIN-n; cout i: i a: a b: b c: cendl; c=c+8; other(); cout-MAIN-n; cout i: i a: a b: b c: cendl; i=i+10; other(); v
30、oid other(void) static int a=2; static int b; / a,b為靜態(tài)局部變量,具有全局壽命,局部可見(jiàn)。 /只第一次進(jìn)入函數(shù)時(shí)被初始化。 int c=10; / C為局部變量,具有動(dòng)態(tài)生存期, /每次進(jìn)入函數(shù)時(shí)都初始化。 a=a+2; i=i+32; c=c+5; cout-OTHER-n; cout i: i a: a b: b c: cendl; b=a;17運(yùn)行結(jié)果:-MAIN- i: 1 a: 0 b: -10 c: 0-OTHER- i: 33 a: 4 b: 0 c: 15-MAIN- i: 33 a: 0 b: -10 c: 8-OTHER-
31、 i: 75 a: 6 b: 4 c: 1518例5-3具有靜態(tài)、動(dòng)態(tài)生存期對(duì)象的時(shí)鐘程序#includeclass Clock/時(shí)鐘類(lèi)聲明public:/外部接口Clock();void SetTime(int NewH, int NewM, int NewS); /三個(gè)形參均具有函數(shù)原型作用域void ShowTime();Clock()private:/私有數(shù)據(jù)成員int Hour,Minute,Second;/時(shí)鐘類(lèi)成員函數(shù)實(shí)現(xiàn)Clock:Clock() /構(gòu)造函數(shù) Hour=0;Minute=0;Second=0;void Clock:SetTime(int NewH,int New
32、M,int NewS) Hour=NewH;Minute=NewM;Second=NewS;void Clock:ShowTime() coutHour:Minute:Secondendl;20Clock globClock;/聲明對(duì)象globClock, /具有靜態(tài)生存期,文件作用域int main()/主函數(shù)coutFirst time output:endl;/引用具有文件作用域的對(duì)象:globClock.ShowTime();/對(duì)象的成員函數(shù)具有類(lèi)作用域globClock.SetTime(8,30,30);Clock myClock(globClock); /聲明具有塊作用域的對(duì)象my
33、ClockcoutSecond time output:endl;myClock.ShowTime();/引用具有塊作用域的對(duì)象21程序的運(yùn)行結(jié)果為:First time output:0:0:0Second time output:8:30:3022多多文件程序結(jié)構(gòu)文件程序結(jié)構(gòu) 一個(gè)一個(gè)C+C+程序稱(chēng)為一個(gè)工程(程序稱(chēng)為一個(gè)工程(.dsp.dsp) 一個(gè)工程由一個(gè)或多個(gè)文件組成一個(gè)工程由一個(gè)或多個(gè)文件組成 一個(gè)文件可以包含多個(gè)函數(shù)定義,但一個(gè)函數(shù)的定義必須一個(gè)文件可以包含多個(gè)函數(shù)定義,但一個(gè)函數(shù)的定義必須 完整地存在于一個(gè)文件中完整地存在于一個(gè)文件中 一個(gè)文件可以被多個(gè)應(yīng)用程序共享一個(gè)文件可
34、以被多個(gè)應(yīng)用程序共享多多文件結(jié)構(gòu)文件結(jié)構(gòu) 一個(gè)好的軟件系統(tǒng)應(yīng)當(dāng)分解為各種同構(gòu)邏輯文件一個(gè)好的軟件系統(tǒng)應(yīng)當(dāng)分解為各種同構(gòu)邏輯文件頭文件頭文件A頭文件頭文件B頭文件頭文件C實(shí)現(xiàn)文件實(shí)現(xiàn)文件A.cpp實(shí)現(xiàn)文件實(shí)現(xiàn)文件B .cpp實(shí)現(xiàn)文件實(shí)現(xiàn)文件C .cpp主主 文文 件件 M.cpp例例 計(jì)算圓面積和矩形面積計(jì)算圓面積和矩形面積myAreamyCircle.cppmyRect.cppmyMain.cpp例計(jì)例計(jì)算圓面積和矩形面積算圓面積和矩形面積const double pi = 3.14 ;double circle ( double radius ) return pi * radius * r
35、adius ; myCircle.cppdouble rect ( double with, double length ) return with * length ; myRect.cppdouble circle( double radius ) ;double rect( double width, double length ) ; myArea例例3-27 計(jì)算圓面積和矩形面積計(jì)算圓面積和矩形面積#includeusing namespace std ;#include myAreaint main() double width, length ; cout width lengt
36、h ; cout Area of recttangle is: rect( width, length ) endl ; double radius ; cout radius ; cout Area of circle is: circle( radius ) endl ; myMain.cpp預(yù)預(yù)處理指令處理指令 源程序源程序預(yù)處理器預(yù)處理器詞法分析詞法分析語(yǔ)法分析語(yǔ)法分析代碼生成代碼生成 錯(cuò)誤處理程序錯(cuò)誤處理程序 目標(biāo)程序目標(biāo)程序 符號(hào)表符號(hào)表 錯(cuò)誤信息錯(cuò)誤信息C+編譯器工作過(guò)程編譯器工作過(guò)程預(yù)處理器預(yù)處理器 改善程序的組織和管理改善程序的組織和管理預(yù)處理指令預(yù)處理指令 所有編譯指令以所
37、有編譯指令以 # 開(kāi)頭,每條指令單獨(dú)占一行開(kāi)頭,每條指令單獨(dú)占一行預(yù)預(yù)處理指令處理指令 1文件包含文件包含 include指令在編譯之前把指定文件包含到該命令所在位置指令在編譯之前把指定文件包含到該命令所在位置 # include 或或# include 文件名文件名 形式為:形式為:系統(tǒng)頭文件系統(tǒng)頭文件 預(yù)預(yù)處理指令處理指令 1文件包含文件包含 include指令在編譯之前把指定文件包含到該命令所在位置指令在編譯之前把指定文件包含到該命令所在位置 # include 或或# include 文件名文件名 形式為:形式為:自定義頭文件自定義頭文件 預(yù)預(yù)處理指令處理指令 2條件編譯條件編譯 形式形式1# if 常量表達(dá)式常量表達(dá)式程序段程序段# endif形式形式2# if 常量表達(dá)式常量表達(dá)式程序段程序段1# else程序段程序段2# endif形式形式3# if 常量表達(dá)式常量表達(dá)式1程序段程序段1 # elif 常量表達(dá)式常量表達(dá)式2程序段程序段2# elif 常量表達(dá)式常量表達(dá)式n程序段程序段n# else程序段程序段n+1# endif預(yù)預(yù)處理指令處理指令 3宏定義指令宏定義指令 用指定正文替
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年定制櫥柜項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 2025年毛細(xì)管電泳儀項(xiàng)目提案報(bào)告
- 2024年精裝修修護(hù)工程協(xié)議樣本版B版
- 金色的魚(yú)鉤讀書(shū)心得模板10篇
- 安全生產(chǎn)演講稿范文10篇
- 做銷(xiāo)售的實(shí)習(xí)報(bào)告3篇
- 銷(xiāo)售提成方案模板匯編5篇
- 2024年五年級(jí)數(shù)學(xué)上冊(cè) 四 可能性 1簡(jiǎn)單隨機(jī)現(xiàn)象和等可能性教學(xué)實(shí)錄 冀教版
- 活動(dòng)策劃書(shū)(15篇)
- 2024-2025學(xué)年新教材高中地理 第三章 大氣的運(yùn)動(dòng) 第二節(jié) 氣壓帶和風(fēng)帶教學(xué)實(shí)錄 新人教版選修1
- 課程思政專(zhuān)題培訓(xùn)
- 食品買(mǎi)賣(mài)合同范本
- 期末素養(yǎng)質(zhì)量檢測(cè)卷(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 質(zhì)控競(jìng)聘課件
- 2024年房地產(chǎn)開(kāi)發(fā)商與承建商之間的工程承包合同
- 2024-2025學(xué)年高二上學(xué)期期中家長(zhǎng)會(huì)-家校同頻共話(huà)成長(zhǎng) 課件
- 語(yǔ)文-句子成分劃分名師公開(kāi)課獲獎(jiǎng)?wù)n件百校聯(lián)賽一等獎(jiǎng)?wù)n件
- 班組安全爭(zhēng)先創(chuàng)優(yōu)競(jìng)賽活動(dòng)考核細(xì)則表
- 2024-2030年中國(guó)眼視光行業(yè)現(xiàn)狀態(tài)勢(shì)與未來(lái)前景預(yù)測(cè)報(bào)告
- 北京市西城區(qū)2022-2023學(xué)年高三上學(xué)期期末生物試題 附解析
- 《中文歌曲在對(duì)外漢語(yǔ)文化教學(xué)中的應(yīng)用研究》
評(píng)論
0/150
提交評(píng)論