- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常数、静态成员与朋友关系
第13章 常數、靜態成員與朋友關係 13-1 常數物件與成員 13-2 物件成員與巢狀類別 13-3 靜態成員資料與函數 13-4 朋友關係 13-1 常數物件與成員-說明 C++語言的const關鍵字可以用來修飾變數、函數、函數參數、指標、物件和成員函數等,例如:const修飾的變數是宣告常數,在函數的參數使用const,表示函數中不允許更改參數值。 對於物件來說,const關鍵字可以授予物件權限,因為我們可以使用const關鍵字來限制物件不能修改,或指定成員函數不能修改物件內容。 13-1 常數物件與成員-常數成員資料與函數(說明) 在C++類別除了建構子和解構子外,成員資料和函數都可以使用const關鍵字來修飾。例如:帳戶類別account的宣告,如下所示: class account { private: double amount; const double rate; public: account(double a, double r); double getInterest() const; void printAccount() const; }; 13-1 常數物件與成員-常數成員資料與函數(初始常數值) 對於類別中的常數,我們只能在建構子使用成員初始語法(Member Initializer Syntax)來指定其值,如下所示: account::account(double a,double r) : rate(r) ,amount(a) { } 上述建構子「:」符號之後就是成員初始語法,因為初始多個成員函數,所以使用「,」逗號分隔。 13-1 常數物件與成員-常數物件 在使用類別宣告物件變數時,也可以使用const,如下所示: const date open(30, 1, 2006); 上述物件變數open是一個常數物件,表示物件不允許修改,換句話說,常數物件一定擁有常數的成員函數。 13-2 物件成員與巢狀類別 13-2-1 物件成員 13-2-2 巢狀類別 13-2-1 物件成員-student類別 在C++類別宣告的成員資料除了可以使用資料型態、結構和陣列變數外,也可以使用其他類別的物件變數。例如:student類別的宣告擁有date物件的成員資料,如下所示: class student { private: int id; double test1, test2, test3; date *birthday; double getAverage() const; public: student(int id, int d, int m, int y); void setTest(double t1, double t2, double t3); void printStudent() const; }; 13-2-1 物件成員-date類別 date類別宣告,如下所示: class date { private: int day, month, year; public: date(int d, int m, int y); void printDate() const; }; 13-2-2 巢狀類別-說明 巢狀類別(Nested Class)強調類別之間的組成關係,例如:學生擁有成績資料,所以test類別屬於student類別的一部分。 student類別擁有成員類別test的「內層類別」(Inner Classes),而student是巢狀類別的「外層類別」(Enclosing Class),內層類別可以位在private、protected(第15章說明)和public區塊。 13-2-2 巢狀類別-範例 class student { // student外層類別宣告 private: int id; class test { // test內層類別宣告 private: double score; public: double getScore() const { return score; } void setScore(double s) { score = s; } }; test quiz; public: student(int no) : id(no) {} void setScore(double t); void printStudent() const; }; 13-2-2 巢狀類別-存取說明 內層類別如果位在private區塊,其存取範圍只限外層類別之內;如果位在publi
文档评论(0)