![計(jì)算機(jī)軟件及應(yīng)用C數(shù)據(jù)共享與保護(hù)PPT課件_第1頁](http://file3.renrendoc.com/fileroot3/2021-11/6/5e7db42a-4878-4dbc-b3a6-07432014e7a5/5e7db42a-4878-4dbc-b3a6-07432014e7a51.gif)
![計(jì)算機(jī)軟件及應(yīng)用C數(shù)據(jù)共享與保護(hù)PPT課件_第2頁](http://file3.renrendoc.com/fileroot3/2021-11/6/5e7db42a-4878-4dbc-b3a6-07432014e7a5/5e7db42a-4878-4dbc-b3a6-07432014e7a52.gif)
![計(jì)算機(jī)軟件及應(yīng)用C數(shù)據(jù)共享與保護(hù)PPT課件_第3頁](http://file3.renrendoc.com/fileroot3/2021-11/6/5e7db42a-4878-4dbc-b3a6-07432014e7a5/5e7db42a-4878-4dbc-b3a6-07432014e7a53.gif)
![計(jì)算機(jī)軟件及應(yīng)用C數(shù)據(jù)共享與保護(hù)PPT課件_第4頁](http://file3.renrendoc.com/fileroot3/2021-11/6/5e7db42a-4878-4dbc-b3a6-07432014e7a5/5e7db42a-4878-4dbc-b3a6-07432014e7a54.gif)
![計(jì)算機(jī)軟件及應(yīng)用C數(shù)據(jù)共享與保護(hù)PPT課件_第5頁](http://file3.renrendoc.com/fileroot3/2021-11/6/5e7db42a-4878-4dbc-b3a6-07432014e7a5/5e7db42a-4878-4dbc-b3a6-07432014e7a55.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、5.1.1 作用域函數(shù)原形的作用域 作用域是一個(gè)標(biāo)識(shí)符在程序正文中有效的區(qū)域。 函數(shù)原型中的參數(shù),其作用域始于(,結(jié)束于)。 例如,設(shè)有下列原型聲明:double area(double radius);15.1 標(biāo)識(shí)符的作用域與可見性radius 的作用域僅在于此,不能用于程序正文其他地方,因而可有可無。第1頁/共68頁局部作用域 函數(shù)的形參,在塊中聲明的標(biāo)識(shí)符,其作用域自聲明處起,限于塊中,例如:void fun(int a) int b = a; cin b; if (b 0) int c; . 25.1 標(biāo)識(shí)符的作用域與可見性 5.1.1 作用域c的作用域a的作用域b的作用域第2頁/共
2、68頁類作用域 類作用域作用于特定的成員名。 類X的成員m具有類作用域,對(duì)m的訪問方式如下: 如果在X的成員函數(shù)中沒有聲明同名的局部作用域標(biāo)識(shí)符,那么在該函數(shù)內(nèi)可以訪問成員m。 通過表達(dá)式x.m或者X:m訪問。 通過表達(dá)式ptr-M35.1 標(biāo)識(shí)符的作用域與可見性 5.1.1 作用域第3頁/共68頁命名空間作用域45.1 標(biāo)識(shí)符的作用域與可見性 5.1.1 作用域目的:為了解決命名沖突一個(gè)命名空間可以將不同的標(biāo)識(shí)符集合在一個(gè)命名作用域(named scope)內(nèi)聲明命名空間的語法形式如下:namespace 命名空間名 命名空間內(nèi)的各種聲明(函數(shù)聲明、類聲明) 第4頁/共68頁5 例如,聲明一
3、個(gè)命名空間NS:namspace SomeNS class SomeClass;void SomeFun (); 則引用標(biāo)識(shí)符的方式如下,NS: SomeClass obj1;NS: SomeFun ();第5頁/共68頁6 可以用using來指定命名空間或命名空間中的標(biāo)識(shí)符,具體格式如下: using 命名空間名:標(biāo)識(shí)符名 using namespace 命名空間名 例如,經(jīng)過以下聲明:using SomeNS : SomeClass;using namespace SomeNS;回顧: using namespace std;命名空間std中所有標(biāo)識(shí)符都可直接引用 在新的C+標(biāo)準(zhǔn)程序庫中,
4、所有標(biāo)識(shí)符都聲明在命名空間std中,頭文件都不使用擴(kuò)展名第6頁/共68頁兩類兩類特殊的特殊的命名空間命名空間 -全局命名空間和匿名命名空全局命名空間和匿名命名空間間全局命名空間是默認(rèn)的命名空間,在顯式聲明的命名空間之外聲明的標(biāo)識(shí)符都在一個(gè)全局命名空間中。聲明匿名命名空間的語法形式如下:namespace 命名空間內(nèi)的各種聲明(函數(shù)聲明、類聲明) 第7頁/共68頁8例5-1 作用域?qū)嵗?include using namespace std;int i; /在在全局命名空間中的全局變量全局命名空間中的全局變量namespace Ns int j;int main() i = 5; Ns:j=6;
5、 /子塊子塊 using namespace Ns; int i; i = 7; cout i = i endl; cout i = i endl; cout “i = ” i endl return 0;運(yùn)行結(jié)果:運(yùn)行結(jié)果:i = 7j= 6i = 5第8頁/共68頁5.1.2 可見性 可見性是從對(duì)標(biāo)識(shí)符的引用的角度來談的概念 可見性表示從內(nèi)層作用域向外層作用域“看”時(shí)能看見什么。 如果標(biāo)識(shí)在某處可見,則就可以在該處引用此標(biāo)識(shí)符。95.1 標(biāo)識(shí)符的作用域與可見性塊作用域類作用域命名空間作用域第9頁/共68頁5.1.2 可見性(續(xù)) 標(biāo)識(shí)符應(yīng)聲明在先,引用在后。 如果某個(gè)標(biāo)識(shí)符在外層中聲明,且
6、在內(nèi)層中沒有同一標(biāo)識(shí)符的聲明,則該標(biāo)識(shí)符在內(nèi)層可見。 對(duì)于兩個(gè)嵌套的作用域,如果在內(nèi)層作用域內(nèi)聲明了與外層作用域中同名的標(biāo)識(shí)符,則外層作用域的標(biāo)識(shí)符在內(nèi)層不可見。105.1 標(biāo)識(shí)符的作用域與可見性第10頁/共68頁同一作用域中的同名標(biāo)識(shí)符 在同一作用域內(nèi)的對(duì)象名、函數(shù)名、枚舉常量名會(huì)隱藏同名的類名或枚舉類型名。 重載的函數(shù)可以有相同的函數(shù)名。115.1 標(biāo)識(shí)符的作用域與可見性 5.1.2 可見性第11頁/共68頁5.2 對(duì)象的生存期 對(duì)象從產(chǎn)生到結(jié)束的這段時(shí)間就是它的生存期。在對(duì)象生存期內(nèi),對(duì)象將保持它的值,直到被更新為止。12第12頁/共68頁5.2.1 靜態(tài)生存期 這種生存期與程序的運(yùn)行期
7、相同。 在文件作用域中聲明的對(duì)象具有這種生存期。 在函數(shù)內(nèi)部聲明靜態(tài)生存期對(duì)象,要冠以關(guān)鍵字static 。135.2 對(duì)象的生存期第13頁/共68頁5.2.2 動(dòng)態(tài)生存期 塊作用域中聲明的,沒有用static修是的對(duì)象是動(dòng)態(tài)生存期的對(duì)象(習(xí)慣稱局部生存期對(duì)象)。 開始于程序執(zhí)行到聲明點(diǎn)時(shí),結(jié)束于命名該標(biāo)識(shí)符的作用域結(jié)束處。145.2 對(duì)象的生存期第14頁/共68頁例5-2 變量的生存期與可見性#includeusing namespace std;int i = 1; / i 為全局變量,具有靜態(tài)生存期。void other() static int a = 2; static int b;
8、 / a,b為靜態(tài)局部變量,具有全局壽命,局部可見。 /只第一次進(jìn)入函數(shù)時(shí)被初始化。 int c = 10; / C為局部變量,具有動(dòng)態(tài)生存期, /每次進(jìn)入函數(shù)時(shí)都初始化。 a += 2; i += 32; c += 5; cout-OTHER-n; cout i: i a: a b: b c: cendl; b = a;155.2 對(duì)象的生存期 5.2.2 動(dòng)態(tài)生存期第15頁/共68頁int main() static int a;/靜態(tài)局部變量,有全局壽命,局部可見。 int b = -10; / b, c為局部變量,具有動(dòng)態(tài)生存期。 int c = 0;cout -MAIN-n; cou
9、t i: i a: a b: b c: cendl; c += 8; other(); cout-MAIN-n; cout i: i a: a b: b c: cendl; i += 10; other(); return 0;165.2 對(duì)象的生存期 5.2.2 動(dòng)態(tài)生存期例5-2 續(xù)第16頁/共68頁運(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- i: 75 a: 6 b: 4 c: 15例5-2(續(xù))5.2 對(duì)象的生存期 5.2.2 動(dòng)態(tài)生
10、存期第17頁/共68頁例 5-3 具有靜態(tài)、動(dòng)態(tài)生存期對(duì)象的時(shí)鐘程序#includeusing namespace std;class Clock /時(shí)鐘類定義public:/外部接口Clock();/三個(gè)形參均具有函數(shù)原型作用域 void setTime(int newH, int newM, int newS); void showTime();private: /私有數(shù)據(jù)成員int hour, minute, second;185.2 對(duì)象的生存期 5.2.2 動(dòng)態(tài)生存期第18頁/共68頁Clock:Clock():hour(0), minute(0), second(0) /構(gòu)造函數(shù)v
11、oid Clock:setTime(int newH,int newM,int newS)/三個(gè)形參均具有局部作用域hour = newH;minute = newM;second = newS;void Clock:showTime() cout hour : minute : second endl;195.2 對(duì)象的生存期 5.2.2 動(dòng)態(tài)生存期例5-3 續(xù)第19頁/共68頁Clock globClock;/聲明對(duì)象globClock, /具有靜態(tài)生存期,文件作用域int main() /主函數(shù)cout First time output: endl;/引用具有文件作用域的對(duì)象:glob
12、Clock.showTime();/對(duì)象的成員函數(shù)具有類作用域globClock.setTime(8,30,30);Clock myClock(globClock); /聲明具有塊作用域的對(duì)象myClockcoutSecond time output:endl;myClock.showTime(); /引用具有塊作用域的對(duì)象return 0;205.2 對(duì)象的生存期 5.2.2 動(dòng)態(tài)生存期例5-3 續(xù)第20頁/共68頁程序的運(yùn)行結(jié)果為:First time output:0:0:0Second time output:8:30:30例5-3(續(xù))5.2 對(duì)象的生存期 5.2.2 動(dòng)態(tài)生存期第2
13、1頁/共68頁5.3.1 靜態(tài)數(shù)據(jù)成員 靜態(tài)數(shù)據(jù)成員 用關(guān)鍵字static聲明 該類的所有對(duì)象維護(hù)該成員的同一個(gè)拷貝,靜態(tài)數(shù)據(jù)成員具有靜態(tài)生存期。 必須在類外定義和初始化,用(:)來指明所屬的類。225.3 類的靜態(tài)成員第22頁/共68頁例5-4 具有靜態(tài)數(shù)據(jù)成員的Point類235.3 類的靜態(tài)成員 5.3.1 靜態(tài)數(shù)據(jù)成員Point- x : int- y : int- count : int = 0+ Point(xx : int = 0, yy : int = 0)+ getX() : int+ getY() : int+ Point(p : Point &)+ showCou
14、nt() : void第23頁/共68頁/5_4.cpp#include using namespace std; class Point /Point類定義public:/外部接口Point(int x = 0, int y = 0) : x(x), y(y) /構(gòu)造函數(shù)/在構(gòu)造函數(shù)中對(duì)count累加,所有對(duì)象共同維護(hù)同一個(gè)countcount+;Point(Point &p) /拷貝構(gòu)造函數(shù)x = p.x;y = p.y;count+;Point() count-; int getX() return x; int getY() return y; 24例5-4 靜態(tài)成員舉例5.3
15、 類的靜態(tài)成員 5.3.1 靜態(tài)數(shù)據(jù)成員第24頁/共68頁 void showCount() /輸出靜態(tài)數(shù)據(jù)成員cout Object count = count endl;private:/私有數(shù)據(jù)成員int x, y;static int count;/靜態(tài)數(shù)據(jù)成員聲明,用于記錄點(diǎn)的個(gè)數(shù);int Point:count = 0;/靜態(tài)數(shù)據(jù)成員定義和初始化,使用類名限定int main() /主函數(shù)Point a(4, 5);/定義對(duì)象a,其構(gòu)造函數(shù)回使count增1cout Point A: a.getX() , a.getY();a.showCount();/輸出對(duì)象個(gè)數(shù) Point b
16、(a);/定義對(duì)象b,其構(gòu)造函數(shù)回使count增1cout Point B: b.getX() , b.getY();b.showCount();/輸出對(duì)象個(gè)數(shù)return 0;25例5-4 續(xù)5.3 類的靜態(tài)成員 5.3.1 靜態(tài)數(shù)據(jù)成員第25頁/共68頁例5-4 (續(xù)) 運(yùn)行結(jié)果: Point A: 4, 5 Object count=1 Point B: 4, 5 Object count=2265.3 類的靜態(tài)成員 5.3.1 靜態(tài)數(shù)據(jù)成員第26頁/共68頁5.3.2 靜態(tài)函數(shù)成員 靜態(tài)函數(shù)成員 類外代碼可以使用類名和作用域操作符來調(diào)用靜態(tài)成員函數(shù)。 靜態(tài)成員函數(shù)只能引用屬于該類的靜態(tài)
17、數(shù)據(jù)成員或靜態(tài)成員函數(shù)。275.3 類的靜態(tài)成員第27頁/共68頁例5-5具有靜態(tài)數(shù)據(jù)、函數(shù)成員的 Point類285.3 類的靜態(tài)成員 5.3.2 靜態(tài)函數(shù)成員Point- x : int- y : int- count : int = 0+ Point(xx : int = 0, yy : int = 0)+ getX() : int+ getY() : int+ Point(p : Point &)+ showCount() : void第28頁/共68頁/5_5.cpp#include using namespace std; class Point /Point類定義publ
18、ic:/外部接口Point(int x = 0, int y = 0) : x(x), y(y) /構(gòu)造函數(shù)/在構(gòu)造函數(shù)中對(duì)count累加,所有對(duì)象共同維護(hù)同一個(gè)countcount+;Point(Point &p) /拷貝構(gòu)造函數(shù)x = p.x;y = p.y;count+;Point() count-; int getX() return x; int getY() return y; static void showCount() /靜態(tài)函數(shù)成員cout Object count = count endl;295.3 類的靜態(tài)成員 5.3.2 靜態(tài)函數(shù)成員例5-5 靜態(tài)成員舉例第
19、29頁/共68頁private:/私有數(shù)據(jù)成員int x, y;static int count; /靜態(tài)數(shù)據(jù)成員聲明,用于記錄點(diǎn)的個(gè)數(shù); int Point:count = 0;/靜態(tài)數(shù)據(jù)成員定義和初始化,使用類名限定 int main() /主函數(shù)Point a(4, 5);/定義對(duì)象a,其構(gòu)造函數(shù)回使count增1cout Point A: a.getX() , a.getY();Point:showCount();/輸出對(duì)象個(gè)數(shù) Point b(a);/定義對(duì)象b,其構(gòu)造函數(shù)回使count增1cout Point B: b.getX() , b.getY();Point:showCou
20、nt();/輸出對(duì)象個(gè)數(shù) return 0;305.3 類的靜態(tài)成員 5.3.2 靜態(tài)函數(shù)成員例5-5 (續(xù))第30頁/共68頁5.4 類的友元 友元是C+提供的一種破壞數(shù)據(jù)封裝和數(shù)據(jù)隱藏的機(jī)制。 通過將一個(gè)模塊聲明為另一個(gè)模塊的友元,一個(gè)模塊能夠引用到另一個(gè)模塊中本是被隱藏的信息。 可以使用友元函數(shù)和友元類。 為了確保數(shù)據(jù)的完整性,及數(shù)據(jù)封裝與隱藏的原則,建議盡量不使用或少使用友元。31第31頁/共68頁5.4.1 友元函數(shù) 友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾說明的非成員函數(shù),在它的函數(shù)體中能夠通過對(duì)象名訪問 private 和 protected成員 作用:增加靈活性,使程序員可
21、以在封裝和快速性方面做合理選擇。 訪問對(duì)象中的成員必須通過對(duì)象名。325.4 類的友元第32頁/共68頁例5-6 使用友元函數(shù)計(jì)算兩點(diǎn)間的距離#include #include class Point /Point類聲明public:/外部接口Point(int x=0, int y=0) : x(x), y(y) int getX() return x; int getY() return y; friend float dist(Point &a, Point &b); private:/私有數(shù)據(jù)成員int x, y;335.4 類的友元 5.4.1 友元函數(shù)第33頁/共6
22、8頁例5-6 (續(xù))float dist( Point& a, Point& b) double x = a.x - b.x; double y = a.y - b.y; return static_cast(sqrt(x * x + y * y);int main() Point p1(1, 1), p2(4, 5); cout The distance is: ; cout dist(p1, p2) endl; return 0;345.4 類的友元 5.4.1 友元函數(shù)運(yùn)行結(jié)果:運(yùn)行結(jié)果:The distance is: 5第34頁/共68頁5.4.2 友元類 若一個(gè)類為
23、另一個(gè)類的友元,則此類的所有成員都能訪問對(duì)方類的私有成員。 聲明語法:將友元類名在另一個(gè)類中使用friend修飾說明。355.4 類的友元第35頁/共68頁友元類舉例class A friend class B;public: void display() cout x endl; private: int x;class B public: void set(int i); void display();private: A a;365.4 類的友元 5.4.2 友元類void B:set(int i) a.x=i;void B:display() a.display();第36頁/共68頁
24、友元關(guān)系是單向的 如果聲明B類是A類的友元,B類的成員函數(shù)就可以訪問A類的私有和保護(hù)數(shù)據(jù),但A類的成員函數(shù)卻不能訪問B類的私有、保護(hù)數(shù)據(jù)。375.4 類的友元 5.4.2 友元類第37頁/共68頁5.5.1 常對(duì)象常類型的對(duì)象必須進(jìn)行初始化,而且不能被更新。 常對(duì)象:必須進(jìn)行初始化,不能被更新。const 類名 對(duì)象名 常引用:被引用的對(duì)象不能被更新。const 類型說明符 &引用名常數(shù)組:數(shù)組元素不能被更新(下一章介紹)。類型說明符 const 數(shù)組名大小.常指針:指向常量的指針(下一章介紹)。385.5 共享數(shù)據(jù)的保護(hù)第38頁/共68頁常對(duì)象舉例class A public: A(
25、int i,int j) x=i; y=j; . private: int x,y;A const a(3,4); /a是常對(duì)象,不能被更新395.5 共享數(shù)據(jù)的保護(hù) 5.5.1 常對(duì)象第39頁/共68頁5.5.2用const修飾的對(duì)象成員 常成員函數(shù) 使用const關(guān)鍵字說明的函數(shù)。 常成員函數(shù)不更新對(duì)象的數(shù)據(jù)成員。 常成員函數(shù)說明格式:類型說明符 函數(shù)名(參數(shù)表)const;這里,const是函數(shù)類型的一個(gè)組成部分,因此在實(shí)現(xiàn)部分也要帶const關(guān)鍵字。 const關(guān)鍵字可以被用于參與對(duì)重載函數(shù)的區(qū)分 通過常對(duì)象只能調(diào)用它的常成員函數(shù)。 常數(shù)據(jù)成員 使用const說明的數(shù)據(jù)成員。405.5
26、 共享數(shù)據(jù)的保護(hù)第40頁/共68頁例5-7 常成員函數(shù)舉例#includeusing namespace std;class R public: R(int r1, int r2) : r1(r1), r2(r2) void print(); void print() const;private: int r1, r2;415.5 共享數(shù)據(jù)的保護(hù) 5.5.2 用const修飾的對(duì)象成員第41頁/共68頁例5-7(續(xù))void R:print() cout r1 : r2 endl;void R:print() const cout r1 ; r2 endl;int main() R a(5,4
27、); a.print(); /調(diào)用void print() const R b(20,52); b.print(); /調(diào)用void print() constreturn 0;425.5 共享數(shù)據(jù)的保護(hù) 5.5.2 用const修飾的對(duì)象成員運(yùn)行結(jié)果:運(yùn)行結(jié)果:5:420;52第42頁/共68頁例5-8 常數(shù)據(jù)成員舉例#include using namespace std;class A public:A(int i);void print();private:const int a;static const int b; /靜態(tài)常數(shù)據(jù)成員;435.5 共享數(shù)據(jù)的保護(hù) 5.5.2 用con
28、st修飾的對(duì)象成員第43頁/共68頁例5-8(續(xù))const int A:b=10; A:A(int i) : a(i) void A:print() cout a : b endl;int main() /*建立對(duì)象a和b,并以100和0作為初值,分別調(diào)用構(gòu)造函數(shù),通過構(gòu)造函數(shù)的初始化列表給對(duì)象的常數(shù)據(jù)成員賦初值*/ A a1(100), a2(0); a1.print(); a2.print(); return 0;445.5 共享數(shù)據(jù)的保護(hù) 5.5.2 用const修飾的對(duì)象成員運(yùn)行結(jié)果:運(yùn)行結(jié)果:100:100:10第44頁/共68頁5.5.3 常引用 如果在聲明引用時(shí)用const修飾
29、,被聲明的引用就是常引用。 常引用所引用的對(duì)象不能被更新。 如果用常引用做形參,便不會(huì)意外地發(fā)生對(duì)實(shí)參的更改。常引用的聲明形式如下: const 類型說明符 &引用名;455.5 共享數(shù)據(jù)的保護(hù)第45頁/共68頁例5-9 常引用作形參#include #include using namespace std;class Point /Point類定義public:/外部接口Point(int x = 0, int y = 0) : x(x), y(y) int getX() return x; int getY() return y; friend float dist(const P
30、oint &p1, const Point &p2);private: /私有數(shù)據(jù)成員int x, y;465.5 共享數(shù)據(jù)的保護(hù) 5.5.3 常引用第46頁/共68頁例5-9 (續(xù))float dist(const Point &p1, const Point &p2) double x = p1.x - p2.x;double y = p1.y - p2.y;return (float)(sqrt(x * x + y * y);int main() /主函數(shù)const Point myp1(1, 1), myp2(4, 5);cout The distanc
31、e is: ;cout dist(myp1, myp2) endl;return 0; 475.5 共享數(shù)據(jù)的保護(hù) 5.5.3 常引用第47頁/共68頁5.6.1 C+程序的一般組織結(jié)構(gòu) 一個(gè)源程序可以劃分為多個(gè)源文件: 類聲明文件(.h文件) 類實(shí)現(xiàn)文件(.cpp文件) 類的使用文件(main()所在的.cpp文件) 利用工程來組合各個(gè)文件。485.6多文件結(jié)構(gòu)和編譯預(yù)處理命令第48頁/共68頁例 5-10具有靜態(tài)數(shù)據(jù)、函數(shù)成員的 Point類,多文件組織/文件1,類的定義,Point.hclass Point /類的定義public:/外部接口Point(int x = 0, int y
32、= 0) : x(x), y(y) Point(const Point &p);Point() count-; int getX() const return x; int getY() const return y; static void showCount();/靜態(tài)函數(shù)成員private:/私有數(shù)據(jù)成員int x, y;static int count;/靜態(tài)數(shù)據(jù)成員;495.6多文件結(jié)構(gòu)和編譯預(yù)處理命令 5.6.1 C+的一般組織結(jié)構(gòu)第49頁/共68頁例 5-10(續(xù))/文件2,類的實(shí)現(xiàn),Point.cpp#include Point.h#include using name
33、space std; int Point:count = 0;/使用類名初始化靜態(tài)數(shù)據(jù)成員 Point:Point(const Point &p) : x(p.x), y(p.y) /拷貝構(gòu)造函數(shù)體count+; void Point:showCount() cout Object count = count endl;505.6多文件結(jié)構(gòu)和編譯預(yù)處理命令 5.6.1 C+的一般組織結(jié)構(gòu)第50頁/共68頁例 5-10(續(xù))/文件3,主函數(shù),5_10.cpp#include Point.h#include using namespace std;int main() Point a(4,
34、 5);/定義對(duì)象a,其構(gòu)造函數(shù)回使count增1cout Point A: a.getX() , a.getY();Point:showCount();/輸出對(duì)象個(gè)數(shù) Point b(a);/定義對(duì)象b,其構(gòu)造函數(shù)回使count增1cout Point B: b.getX() , b.getY();Point:showCount();/輸出對(duì)象個(gè)數(shù) return 0;515.6多文件結(jié)構(gòu)和編譯預(yù)處理命令 5.6.1 C+的一般組織結(jié)構(gòu)第51頁/共68頁例5-10(續(xù))52#include point.h#include #include point.h#include point.cppcl
35、ass Point point.h5_10.cpp可執(zhí)行文件5_10.exepoint.obj5_10.obj編譯編譯連接連接系統(tǒng)運(yùn)行庫連接iostream 包含包含 包含包含 系統(tǒng)文件5.6多文件結(jié)構(gòu)和編譯預(yù)處理命令 5.6.1 C+的一般組織結(jié)構(gòu)第52頁/共68頁外部變量 如果一個(gè)變量除了在定義它的源文件中可以使用外,還能被其它文件使用,那么就稱這個(gè)變量是外部變量。 文件作用域中定義的變量,缺省情況下都是外部變量,但在其它文件中如果需要使用這一變量,需要用extern關(guān)鍵字加以聲明。535.6多文件結(jié)構(gòu)和編譯預(yù)處理命令 5.6.2 外部變量與外部函數(shù)第53頁/共68頁外部函數(shù) 在所有類之外
36、聲明的函數(shù)(也就是非成員函數(shù)),都是具有文件作用域的。 這樣的函數(shù)都可以在不同的編譯單元中被調(diào)用,只要在調(diào)用之前進(jìn)行引用性聲明(即聲明函數(shù)原型)即可。也可以在聲明函數(shù)原型或定義函數(shù)時(shí)用extern修飾,其效果與不加修飾的缺省狀態(tài)是一樣的。545.6多文件結(jié)構(gòu)和編譯預(yù)處理命令 5.6.1 C+的一般組織結(jié)構(gòu)第54頁/共68頁將變量和函數(shù)限制在編譯單元內(nèi) 使用匿名的命名空間:在匿名命名空間中定義的變量和函數(shù),都不會(huì)暴露給其它的編譯單元。 namespace /匿名的命名空間int n;void f() n+; 這里被“namespace ”括起的區(qū)域都屬于匿名的命名空間。555.6多文件結(jié)構(gòu)和編譯
37、預(yù)處理命令 5.6.1 C+的一般組織結(jié)構(gòu)第55頁/共68頁 /file1.cpp/file1.cpp #include #include using namespace std;using namespace std; int i=3;int i=3; void next();void next(); void other();void other(); int main()int main() i+;i+;next();next();coutiendl;coutiendl; void next()void next() i+;i+; other(); other(); l/file2.cp
38、p/file2.cpplextern int i;extern int i;lvoid other()void other()li+;i+;第56頁/共68頁5.6.3 標(biāo)準(zhǔn)C+庫 標(biāo)準(zhǔn)C+類庫是一個(gè)極為靈活并可擴(kuò)展的可重用軟件模塊的集合。標(biāo)準(zhǔn)C+類與組件在邏輯上分為6種類型: 輸入/輸出類 容器類與ADT(抽象數(shù)據(jù)類型) 存儲(chǔ)管理類 算法 錯(cuò)誤處理 運(yùn)行環(huán)境支持575.6多文件結(jié)構(gòu)和編譯預(yù)處理命令第57頁/共68頁5.6.4 編譯預(yù)處理 #include 包含指令 將一個(gè)源文件嵌入到當(dāng)前源文件中該點(diǎn)處。 #include 按標(biāo)準(zhǔn)方式搜索,文件位于C+系統(tǒng)目錄的include子目錄下 #include文件名 首先在當(dāng)前目錄中搜索,若沒有,再按標(biāo)準(zhǔn)方式搜索。 #define 宏定義指令 定義符號(hào)常量,很多情況下已被const定義語句取代。 定義帶參數(shù)宏,已被
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)策劃經(jīng)理聘請(qǐng)合同協(xié)議書
- 2025年仿真綠植租賃協(xié)議
- 2025年合作協(xié)議確保
- 2025年古建筑維護(hù)加固項(xiàng)目協(xié)議范本
- 2025年租賃住宅策劃權(quán)益優(yōu)化協(xié)議
- 2025年住宅室內(nèi)設(shè)計(jì)委托施工合同
- 2025年專有裝飾優(yōu)化協(xié)議書
- 2025年長期派遣工勞動(dòng)合同范文
- 2025年創(chuàng)新成果轉(zhuǎn)化與股權(quán)投資協(xié)議指南
- 2025年新版重型貨車租賃協(xié)議
- 2024-2029年中國限幅器芯片行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報(bào)告
- 醫(yī)療器械市場規(guī)劃
- 安徽省合肥市廬陽區(qū)評(píng)價(jià)2023-2024學(xué)年六年級(jí)下學(xué)期小升初數(shù)學(xué)模擬試卷+
- 2024年3月山東省直監(jiān)獄類面試題及參考答案全套
- 新產(chǎn)品研發(fā)工作總結(jié)匯報(bào)
- pi粉末成型工藝
- Optix-OSN3500智能化光傳輸設(shè)備業(yè)務(wù)配置手冊(cè)范本
- swagelok管接頭安裝培訓(xùn)教程
- 公墓管理考核方案
- 把子肉店創(chuàng)業(yè)計(jì)劃書
- 綜合樓裝修改造項(xiàng)目 投標(biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論