前綴++ 后綴++ 運算符重載

下面例子程序中?? const Fraction operator ++(int)?? 中 ??
? int不過是個啞元(dummy),是永遠用不上的 ??
? 它只是用來判斷++是prefix ? 還是 ? postfix ??
? 記住,如果有啞元,則是postfix,否則,就是prefix???
? 就像其他的一元算法和邏輯運算一樣 ??
? 而其實在C++中用到這種啞元的也只有在postfix ? ++ ? 和--了

?例子:

int i=10;
cout<<i++<<endl;????//i=11;后綴加;先返回后自增;???10
cout<<++i<<endl;????//i=12;前綴加;先自增后返回;???12

例:

#include<iostream>
using namespace std;

class Fraction???????????????????????????????????????????//數類;
{
?friend ostream& operator<<(ostream& out, const Fraction& x);
private:
?int den;?????????????????????????????????????????//加的步進距離,使自加的距離不是1;
?int num;?????????????????????????????????????????//數(初值);
public:
?Fraction(int d=1, int n=0):den(d),num(n) {}
?Fraction& operator++()???????????????????????????//前綴自加重載;(前置版本prefix)
??{
???num+=den;????????????????????????//先自增,再返回;
???return *this;
??}
?const Fraction operator ++(int)??????????????????//后綴自加重載;(后置版本postfix)
??{
???Fraction old (*this);????????????//拷貝構造(對象參數是對象)。先返回,再自增;
???++(*this);???????????????????????//調用的是重載的前置版本;
???return old;
??}
};

ostream& operator<<(ostream& out, const Fraction& x)
{
?out<<x.num<<endl;
?return out;
}

int main()
{
?Fraction b(10,10);
?cout<<b++<<endl;
?cout<<++b<<endl;
?return 0;
}

前置版本返回一個引用【Fraction& operator++()】,后置版本返回一個const值【const Fraction operator ++(int)】。

后置版本是利用前置版本來實現的。節約代碼,控制代碼有余。

前置版本的效率高,因為后置版本需要調用前置版本,所有后置版本效率比前置要低。(++i比i++效率高。)

在后置版本里,人為添加一個參數(int),主要是為了區別前置版本,這個參數不會被使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259464.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259464.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259464.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

固定資產調整對資產折舊的影響

固定資產折舊計提方法 一、原值增加&#xff1a; 1、已攤銷資產&#xff1a; 攤銷調整時間設在當期&#xff1a;(1078135) 在進行原值增加后&#xff0c;攤銷日期不變時&#xff0c;折舊在當月體現。 每月新增月折舊調增金額*(1-殘值率)/(折舊年限*12-已提折舊月份的個數) 例&a…

linux系統中 庫分為靜態庫和,Linux系統靜態庫與共享庫

8種機械鍵盤軸體對比本人程序員&#xff0c;要買一個寫代碼的鍵盤&#xff0c;請問紅軸和茶軸怎么選&#xff1f;This article mainly introduces the statics library and shared library on Linux and has done some experiments for better comprehension.Static library&am…

軟件工程概論作業01

軟件工程作業01 寫一個能自動生成三十道小學四則運算題目的 “軟件”&#xff0c;要求&#xff1a;除了整數以外&#xff0c;還要支持真分數的四則運算&#xff08;需要驗證結果的正確性&#xff09;、題目避免重復、可定制出題的數量。 思路&#xff1a;隨機生成兩個數進行計算…

成員指針運算符 .* 和 -*

轉載&#xff1a; http://www.groad.net/bbs/thread-5548-1-1.html 有一種特殊的指針叫做成員指針&#xff0c;它們通常指向一個類的成員&#xff0c;而不是對象中成員的特定實例。 成員指針并不是真正的指針&#xff0c;它只是成員在對象中的偏移量&#xff0c;它們分別是&am…

捕捉Entity framework 6的詳細異常提示

采用 try{}catch (Exception e){throw;}不能捕捉到詳細異常提示, e.message的內容為"Validation failed for one or more entities. See EntityValidationErrors property for more details." 如果需要獲取詳細的異常提示,采用 1 try2 {3 return…

8.16——熟悉安裝linux系統

一、linux的版本——CentOS CentOS&#xff08;Community ENTerprise Operating System&#xff09;是Linux發行版之一&#xff0c;它是來自于Red Hat Enterprise Linux依照開放源代碼規定釋出的源代碼所編譯而成。由于出自同樣的源代碼&#xff0c;因此有些要求高度穩定性的服…

linux中設置默認權限的命令,Linux默認權限掩碼

Linux教程Linux教程&#xff1a;http://www.fdlly.com/m/linux文章目錄默認權限掩碼設置權限掩碼以文字的方式設置權限掩碼查看系統當前的權限掩碼默認權限掩碼當我們創建文件或目錄時&#xff0c;系統會自動根據權限掩碼來生成預設權限&#xff1b;默認情況下的umask值是022(可…

percona-toolkit工具包安裝

percona-toolkit工具包同percona-xtrabackup一樣都是用Perl寫的工具包&#xff0c;percona-toolkit工具包是一組高級的管理mysql的工具包集&#xff0c;可以用來執行各種通過手工執行非常復雜和麻煩的mysql和系統任務&#xff0c;在生產環境中能極大的提高效率&#xff0c;安裝…

C++允許重載的運算符和不允許重載的運算符

C中絕大部分的運算符允許重載&#xff0c;具體規定見表10.1。 表10.1 C允許重載的運算符雙目算術運算符 (加)&#xff0c;-(減)&#xff0c;*(乘)&#xff0c;/(除)&#xff0c;% (取模) 關系運算符 (等于)&#xff0c;! (不等于)&#xff0c;< (小于)&#xff0c;> (大…

Google Mesa概覽

Google Mesa的文章&#xff1a;https://research.google.com/pubs/pub42851.html https://gigaom.com/2014/08/07/google-shows-off-mesa-a-super-fast-data-warehouse-that-runs-across-data-centers/ 為什么未來的Hadoop是實時的&#xff1a; https://gigaom.com/2013/03/0…

C++數組參數應用方式探討(轉)

對于經驗豐富的編程人員來說&#xff0c;C編程語言應該是他們經常使用于程序開發的一種實用性語言。那么&#xff0c;在C中&#xff0c;C數組參數永遠不會按值傳遞。它是傳遞第一個元素&#xff08;準確地說是第0個&#xff09;的指針。 例如&#xff0c;如下聲明&#xff1a; …

一篇關于兼容問題的基礎總結

1.添加兼容文件(以 es5-shim 為例) 方法一&#xff1a; <script src"https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-shim.min.js"></script>在你的開發中&#xff0c;在需要為他做兼容的文件引入改文件 方法二(以模塊引入)&#xff1a; 在…

假如生活欺騙了你

假如生活欺騙了你&#xff0c; 不要悲傷&#xff0c;不要心急&#xff01; 憂郁的日子里需要鎮靜&#xff1a; 相信吧&#xff0c;快樂的日子將會降臨。 心兒永遠向往著未來&#xff1b; 現在卻常是憂郁&#xff0c; 一切都將會過去&#xff1b; 而那過去了的&#xff0c…

linux編譯mmc驅動,Embeded linux之MMC驅動

一、注冊平臺設備platform_device_register(&usr_mci_device);二、填寫平臺設備結構體static struct platform_device usr_mci_device {.name "xxx",.id 0,.dev {.release usr_mci_platdev_release,.dma_mask &usr_mmc_dmama…

redis windows下的環境搭建

先說下安裝吧&#xff01;感覺這東西跟mongodb差不多&#xff0c;安裝和布置挺簡單&#xff0c;下載地址&#xff1a;https://github.com/dmajkic/redis/downloads 下載下來的包里有兩個&#xff0c;一個是32位的&#xff0c;一個是64位的。根據自己的實情情況選擇&#xff0c;…

application/json 四種常見的 POST 提交數據方式

四種常見的 POST 提交數據方式 HTTP/1.1 協議規定的 HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。其中 POST 一般用來向服務端提交數據&#xff0c;本文主要討論 POST 提交數據的幾種方式。 我們知道&#xff0c;HTTP 協議是以 ASCII 碼傳…

C++的4種類型轉換關鍵字及其特點

C中有四種類型轉換關鍵字&#xff0c;分別是reinterpret_cast,static_cast,const_cast,dynamic_cast.這是C 為了減少強制轉換的副作用&#xff0c;并且在查錯時使程序員能夠快速定位&#xff08;總是最值得懷疑的&#xff09;強制轉換&#xff0c;在標準C中新增加了4個關鍵字*…

linux系統數據庫類型,linux下的數據類型

sys/types.h sys/types.h中文名稱為基本系統數據類型。在應用程序源文件中包含 以訪問 _LP64 和 _ILP32 的定義。此頭文件還包含適當時應使用的多個基本派生類型。尤其是以下類型更為重要&#xff1a;caddr_t 核心地址。clock_t 表示系統時間(以時鐘周期為單位)。comp_t 壓縮的…

jsp亂碼

自從重裝系統之后電腦運行程序總是容易出現一些微妙的亂碼&#xff0c;一直都沒有徹底解決&#xff0c;有時候在別的機器上運行無誤的代碼一到我的機器上就出現一些問題。 myeclipse編碼方式怎么改都無效&#xff0c;每次只能再代碼中加上幾行轉碼的語句 今天終于找到罪魁禍首-…

如何使用Notepad++格式化XML文件

經常會從數據庫中讀到擠在一起的XML, 整理它們的格式需要使用一些工具. 比如筆者之前使用過online的tool. 后來經同事介紹, 改用VS2008的CtrlK, CtrlF來整理. 但是VS2008有點龐大, 開啟起來還是有點慢, 用起來也遠不如Notepad順手. 于是筆者Google了一把. 找到了下面的步驟, 非…