- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第章函算子函指算子的基建立的算子朋友算子函指成函的使用指成函的在言不只全域函或建子可以成函也可以例如宣告有的成函如下所示使用指明在宣告的成函可以使用指指向物件本身它的值就是物件本身的位址可以用呼叫物件本身的成函和存取成料使用指使用指在的成函可以使用指指向物件本身的成函和料例如成函的列成料名相同我可以使用指指明是存取成料如下所示使用指瀑布式函呼叫指建立函在成函如果回考指我就可以在呼叫後呼叫其他成函建立瀑布式函呼叫如下所示使用指瀑布式函呼叫指函呼叫呼叫成函後回值是物件本身所以我可以接著呼叫成函最後呼
第14章 過載函數與運算子過載 14-1 過載函數與this指標 14-2 運算子過載的基礎 14-3 建立類別的運算子過載 14-4 朋友關係與運算子過載 14-1 過載函數與this指標 14-1-1 成員函數的過載 14-1-2 使用this指標 14-1-1 成員函數的過載 在C++語言不只全域函數或建構子可以過載,成員函數也可以過載。例如:myTime類別宣告擁有2個過載的setTime()成員函數,如下所示: void myTime::setTime(int h, int m, int s) { hour = h; minute = m; second = s; } void myTime::setTime(int h, int m) { hour = h; minute = m; second = 0; } 14-1-2 使用this指標-說明 在C++類別宣告的成員函數,可以使用this指標來指向物件本身,它的值就是物件本身的記憶體位址,可以用來呼叫物件本身的成員函數和存取成員資料。 14-1-2 使用this指標-使用this指標 在類別的成員函數可以使用this指標,來指向物件本身的成員函數和資料。例如:當成員函數的參數列與成員資料名稱相同時,我們可以使用this指標來指明是存取成員資料,如下所示: void myTime::setTime(int hour, int minute, int second) { this-hour = hour; this-minute = minute this-second = second; } 14-1-2 使用this指標-瀑布式函數呼叫與this指標(建立函數) 在成員函數如果傳回this參考指標,我們就可以在呼叫後,繼續呼叫其他成員函數來建立瀑布式函數呼叫,如下所示: myTime myTime::setHour(int hour) { this-hour = hour; return *this; } myTime myTime::setMinute(int minute) { this-minute = minute; return *this; } myTime myTime::setSecond(int second) { this-second = second; return *this; } 14-1-2 使用this指標-瀑布式函數呼叫與this指標(函數呼叫) 當呼叫setHour()成員函數後,傳回值是物件本身,所以我們可以接著呼叫setMinute()成員函數,最後呼叫setSecond()成員函數,如下所示: close.setHour(6).setMinute(30).setSecond(20); 上述函數呼叫稱為瀑布式函數呼叫。 14-2 運算子過載的基礎-什麼是運算子過載 C++語言的運算子過載是一種機制,可以將C++語言標準運算子使用在自訂類別的物件。例如:業績物件sales使用「+」過載運算子來計算每日業績物件的總和,如下所示: sales monday(435.8, 35); sales tuesday(234.5, 25); sales totals; totals = monday + tuesday; 程式碼是星期一和星期二的monday和tuesday物件,使用「+」過載運算子計算二天業績的總和totals物件。使用過載運算子的目的是增加程式碼的可讀性,避免不一致的語法。 14-2 運算子過載的基礎-可以過載的運算子 在C++語言大部分預設的運算子都可以過載,如下表所示: 14-2 運算子過載的基礎-注意事項 C++語言的「::」、「.*」、「.」、「?:」和sizeof運算子並不支援過載。 C++語言運算子過載並不能新增並不存在的運算子。 C++語言的運算子過載不能更改優先順序和運算元數,例如:二元運算子擁有2個運算元,單元擁有1個運算元是不能改變。 C++語言的運算子過載並不適用在基本資料型態。 C++語言的「()」、「[]」、「-」和「=」運算子只能建立成類別的成員函數,其他運算子還能夠建立成朋友函數。 雖然可以重新定義過載運算子的功能,例如:a-b是物件a加物件b,定義「-」過載運算子為加法功能,但是並不建議如此作。 14-3 建立類別的運算子過載 14-3-1 指定運算子過載 14-3-2 二元運算子過載 14-3-3 單元運算子過載 14-3 建立類別的運算子過載 運算子過載建立的運算子函數就是一般函數,只是使用operator關鍵字來進行宣告,其基本語法如下所示: 類別型態 operator symbol (參數
原创力文档


文档评论(0)