日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 重载自增和自减运算符

發布時間:2025/3/12 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 重载自增和自减运算符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自增++和自減–都是一元運算符,它的前置形式和后置形式都可以被重載。請看下面的例子:

#include <iostream> #include <iomanip> using namespace std;//秒表類 class stopwatch{ public:stopwatch(): m_min(0), m_sec(0){ } public:void setzero(){ m_min = 0; m_sec = 0; }stopwatch run(); // 運行stopwatch operator++(); //++i,前置形式stopwatch operator++(int); //i++,后置形式friend ostream & operator<<( ostream &, const stopwatch &); private:int m_min; //分鐘int m_sec; //秒鐘 };stopwatch stopwatch::run(){++m_sec;if(m_sec == 60){m_min++;m_sec = 0;}return *this; }stopwatch stopwatch::operator++(){return run(); }stopwatch stopwatch::operator++(int n){stopwatch s = *this;run();return s; }ostream &operator<<( ostream & out, const stopwatch & s){out<<setfill('0')<<setw(2)<<s.m_min<<":"<<setw(2)<<s.m_sec;return out; }int main(){stopwatch s1, s2;s1 = s2++;cout << "s1: "<< s1 <<endl;cout << "s2: "<< s2 <<endl;s1.setzero();s2.setzero();s1 = ++s2;cout << "s1: "<< s1 <<endl;cout << "s2: "<< s2 <<endl;return 0; }

運行結果:

s1: 00:00 s2: 00:01 s1: 00:01 s2: 00:01

上面的代碼定義了一個簡單的秒表類,m_min 表示分鐘,m_sec 表示秒鐘,setzero() 函數用于秒表清零,run() 函數是用來描述秒針前進一秒的動作,接下來是三個運算符重載函數。

看一下 run() 函數的實現,run() 函數一開始讓秒針自增,如果此時自增結果等于60了,則應該進位,分鐘加1,秒針置零。

operator++() 函數實現自增的前置形式,直接返回 run() 函數運行結果即可。

operator++ (int n) 函數實現自增的后置形式,返回值是對象本身,但是之后再次使用該對象時,對象自增了,所以在該函數的函數體中,先將對象保存,然后調用一次 run() 函數,之后再將先前保存的對象返回。在這個函數中參數n是沒有任何意義的,它的存在只是為了區分是前置形式還是后置形式。

總結

以上是生活随笔為你收集整理的C++ 重载自增和自减运算符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。