• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++技術(shù)交流

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              6 隨筆 :: 8 文章 :: 1 評論 :: 0 Trackbacks

            重載的基本概念

            在非面向?qū)ο蟮倪^程化語言中,要不每個過程或函數(shù)必須具有惟一的調(diào)用名,否則會導(dǎo)致編譯錯誤。面向?qū)ο蟪绦蛟O(shè)計語言提供使用同一函數(shù)名的機制,通過參數(shù)個數(shù)的不同或類型的不同來選擇使用相應(yīng)的代碼,這就是的函數(shù)的重載。

            重載函數(shù)可分為

            1) 參數(shù)個數(shù)不同的重載
            2) 參數(shù)類型不同的重載
            3) 參數(shù)順序不同的重載




            運算符重載

            C++語言允許程序員重新定義已預(yù)定義的運算符,使其能按用戶的要求具有新的含義,這就是所謂的運算符重載。


            運算符重載的格式

            運算符重載的形式有兩種:重載為類的成員函數(shù)和重載為類的友元函數(shù)

            運算符重載為類的成員函數(shù)的語法形式如下:
            <函數(shù)類型> operator <被重載的運算符><形參表>
            {
            <函數(shù)體>;
            }

            運算符重載為類的友元函數(shù)的語法形式如下:
            friend <函數(shù)類型> operator <被重載的運算符><形參表>
            {
            <函數(shù)體>;
            }

            一般來講,單目運算最好重載為成員函數(shù),而雙目運算符則最好重載為友元函數(shù)。

            重載為成員函數(shù)

            例:

            #include<iostream.h>
            class Time
            {
            private:
            ?int hours,minutes,seconds;
            public:
            ?Time()
            ?{
            ??hours=0;minutes=0;seconds=0;
            ?}
            ?Time(int h, int m, int s)
            ?{
            ??hours=h; minutes=m; seconds=s;
            ?}
            ?Time operator +(Time &);
            ?void gettime();
            };

            Time Time::operator +(Time & time)
            {
            ?int h,m,s;
            ?s=time.seconds+seconds;
            ?m=time.minutes+minutes;
            ?h=time.hours+hours;
            ?Time result(h,m%60,s%60);
            ?return result;
            }

            void Time::gettime()
            {
            ?cout<<hours<<":"<<minutes<<":"<<seconds<<endl;
            }
            void main()
            {
            ?Time t1(8,51,40),t2(4,15,30),t3;
            ?t3=t1+t2;
            ?t3.gettime;
            }





            操作符重載為友元函數(shù)形式


            #include<iostream.h>
            class Time
            {
            private:
            ?int hours,minutes,seconds;
            public:
            ?Time(){ hours=0; minutes=0; seconds=0; }
            ?Time(int h, int m, int s)
            ?{
            ??hours=h; minutes=m, seconds=s;
            ?}
            ?friend Time operator +(Time &, Time &);
            ?void gettime();
            };
            Time operator +(Time &time1, Time &time2)
            {
            ?int h,m,s;
            ?s=time1.seconds+time2.seconds;
            ?m=time1.minutes+time2.minutes+s/60;
            ?h=time1.hours+time2.hours+m/60;
            ?Time result(h,m%60,s%60);
            ?return result;
            }
            void Time::gettime()
            {
            ?cout<<hours<<":"<<minutes<<":"<<seconds<<endl;
            }
            void main()
            {
            ?Time t1(8,51,40),t2(4,15,30),t3;
            ?t3=t1+t2;
            ?t3.gettime();
            }


            何時應(yīng)該用成員函數(shù),何時用友元函數(shù)來訪問類的私有部分。
            這地是要注意的地方:
            (1)構(gòu)造函數(shù)、析構(gòu)函數(shù)和虛函數(shù)運算必須用成員函數(shù);
            (2)若運算符的操作需要修改類對象在狀態(tài),則它應(yīng)該是成員函數(shù),而不是友元函數(shù);
            (3)需要左值操作數(shù)的運算符(如:=、+=、++)的重載最好用成員函數(shù);
            (4)如果運算符所需的操作數(shù)(尤其是第一個操作數(shù))希望在隱式類型轉(zhuǎn)換,則該運算符重載必須用友元,而不是成員函數(shù);
            (5)不能用友元函數(shù)重載的運算符有:=;();[];->,其余運算符都可以使用友元來實現(xiàn)重載。

            posted on 2006-06-24 10:44 啊嵩 閱讀(151) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久91精品久久91综合| 99久久精品免费看国产一区二区三区 | a级毛片无码兔费真人久久| 一本大道久久a久久精品综合| 一个色综合久久| 国产99久久精品一区二区| 久久精品亚洲乱码伦伦中文| 热99RE久久精品这里都是精品免费| 亚洲αv久久久噜噜噜噜噜| 97久久精品人人做人人爽| 久久久www免费人成精品| 国产精品禁18久久久夂久| 久久久久久免费视频| 亚洲一本综合久久| 久久久久亚洲精品天堂| 午夜视频久久久久一区| 亚洲伊人久久大香线蕉苏妲己| 亚洲欧美成人综合久久久| 青青青青久久精品国产h久久精品五福影院1421 | 午夜福利91久久福利| 2021精品国产综合久久| 亚洲精品国产字幕久久不卡| 久久精品成人免费国产片小草| 狠狠色婷婷久久一区二区三区| 一本一本久久A久久综合精品| 欧美日韩精品久久久久| 久久九九亚洲精品| 精品综合久久久久久97超人| 久久香蕉超碰97国产精品| 少妇久久久久久被弄高潮| 久久人人爽人人爽人人片av麻烦| 久久亚洲天堂| 日本高清无卡码一区二区久久| 久久精品国产亚洲Aⅴ香蕉| 精品久久久久久久久久久久久久久| 国产欧美久久久精品| 丁香五月综合久久激情| 久久成人18免费网站| 久久无码国产| 久久婷婷是五月综合色狠狠| 漂亮人妻被中出中文字幕久久|