青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-4  評論-40  文章-117  trackbacks-0
 

轉載 C++的運算符重載

  C++中預定義的運算符的操作對象只能是基本數據類型。但實際上,對于許多用戶自定義類型(例如類),也需要類似的運算操作。這時就必須在C++中重新定義這些運算符,賦予已有運算符新的功能,使它能夠用于特定類型執行特定的操作。運算符重載的實質是函數重載,它提供了C++的可擴展性,也是C++最吸引人的特性之一。 

  運算符重載是通過創建運算符函數實現的,運算符函數定義了重載的運算符將要進行的操作。運算符函數的定義與其他函數的定義類似,惟一的區別是運算符函數的函數名是由關鍵字operator和其后要重載的運算符符號構成的。運算符函數定義的一般格式如下:

 

   

<返回類型說明符> operator <運算符符號>(<參數表>)
{

     
<函數體>

}

 

 運算符重載時要遵循以下規則:

(1) 除了類屬關系運算符"."、成員指針運算符".*"、作用域運算符"::"、sizeof運算符和三目運算符"?:"以外,C++中的所有運算符都可以重載。

(
2) 重載運算符限制在C++語言中已有的運算符范圍內的允許重載的運算符之中,不能創建新的運算符。

(
3) 運算符重載實質上是函數重載,因此編譯程序對運算符重載的選擇,遵循函數重載的選擇原則。

(
4) 重載之后的運算符不能改變運算符的優先級和結合性,也不能改變運算符操作數的個數及語法結構。

(
5) 運算符重載不能改變該運算符用于內部類型對象的含義。它只能和用戶自定義類型的對象一起使用,或者用于用戶自定義類型的對象和內部類型的對象混合使用時。

(
6) 運算符重載是針對新類型數據的實際需要對原有運算符進行的適當的改造,重載的功能應當與原有功能相類似,避免沒有目的地使用重載運算符。

  運算符函數重載一般有兩種形式:重載為類的成員函數和重載為類的非成員函數。非成員函數通常是友元。(可以把一個運算符作為一個非成員、非友元函數重載。但是,這樣的運算符函數訪問類的私有和保護成員時,必須使用類的公有接口中提供的設置數據和讀取數據的函數,調用這些函數時會降低性能??梢詢嚷撨@些函數以提高性能。)   

成員函數運算符

 運算符重載為類的成員函數的一般格式為:

    
<函數類型> operator <運算符>(<參數表>)

    
{

     
<函數體>

    }

  當運算符重載為類的成員函數時,函數的參數個數比原來的操作數要少一個(后置單目運算符除外),這是因為成員函數用this指針隱式地訪問了類的一個對象,它充當了運算符函數最左邊的操作數。因此:

(1) 雙目運算符重載為類的成員函數時,函數只顯式說明一個參數,該形參是運算符的右操作數。

(
2) 前置單目運算符重載為類的成員函數時,不需要顯式說明參數,即函數沒有形參。

(
3) 后置單目運算符重載為類的成員函數時,函數要帶有一個整型形參。

    調用成員函數運算符的格式如下:

    
<對象名>.operator <運算符>(<參數>)

    它等價于

    
<對象名><運算符><參數>

    例如:a
+b等價于a.operator +(b)。一般情況下,我們采用運算符的習慣表達方式。

友元函數運算符

 運算符重載為類的友元函數的一般格式為:

    friend 
<函數類型> operator <運算符>(<參數表>)

    
{

     
<函數體>

    }

  當運算符重載為類的友元函數時,由于沒有隱含的this指針,因此操作數的個數沒有變化,所有的操作數都必須通過函數的形參進行傳遞,函數的參數與操作數自左至右一一對應。

 調用友元函數運算符的格式如下:

    
operator <運算符>(<參數1>,<參數2>)

    它等價于

    
<參數1><運算符><參數2>

    例如:a
+b等價于operator +(a,b)。

兩種重載形式的比較

  在多數情況下,將運算符重載為類的成員函數和類的友元函數都是可以的。但成員函數運算符與友元函數運算符也具有各自的一些特點:

(1) 一般情況下,單目運算符最好重載為類的成員函數;雙目運算符則最好重載為類的友元函數。

(
2) 以下一些雙目運算符不能重載為類的友元函數:=、()、[]、->

(
3) 類型轉換函數只能定義為一個類的成員函數而不能定義為類的友元函數。

(
4) 若一個運算符的操作需要修改對象的狀態,選擇重載為成員函數較好。

(
5) 若運算符所需的操作數(尤其是第一個操作數)希望有隱式類型轉換,則只能選用友元函數。

(
6) 當運算符函數是一個成員函數時,最左邊的操作數(或者只有最左邊的操作數)必須是運算符類的一 個類對象(或者是對該類對象的引用)。如果左邊的操作數必須是一個不同類的對象,或者是一個內部 類型的對象,該運算符函數必須作為一個友元函數來實現。

(
7) 當需要重載運算符具有可交換性時,選擇重載為友元函數。

 

posted on 2009-03-02 10:26 李陽 閱讀(540) 評論(0)  編輯 收藏 引用 所屬分類: C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产欧美韩国高清| 欧美日韩在线视频首页| 欧美在线免费| 午夜精品影院| 欧美影视一区| 欧美一区二区视频在线观看2020| 亚洲一区二区在| 亚洲欧美99| 久久久精品欧美丰满| 欧美亚洲系列| 久久久精品五月天| 国产精品va在线| 国产在线观看精品一区二区三区| 国产日韩欧美亚洲一区| 国产亚洲综合在线| 亚洲欧洲精品一区二区三区不卡| 一个色综合av| 久久精品国产久精国产一老狼| 久久综合久久88| 亚洲高清在线视频| 亚洲电影免费| 一本久久a久久免费精品不卡| 亚洲视频香蕉人妖| 久久精品一二三| 欧美黄色aa电影| 国产精品久久久久久久久搜平片 | 免费成人黄色片| 欧美激情精品久久久| 亚洲国产一区二区三区a毛片 | 欧美一区二视频| 亚洲国产精品成人va在线观看| 在线日韩欧美| 久久在线视频| 91久久精品国产91久久| av不卡在线看| 久久精品在线观看| 欧美日韩午夜视频在线观看| 你懂的视频一区二区| 99国产精品久久| 久久久蜜桃精品| 国产精品色一区二区三区| 尤物99国产成人精品视频| 亚洲一区尤物| 欧美激情一区二区在线| 亚洲综合国产| 亚洲日韩视频| 久久综合久久综合久久综合| 国产欧美一区二区精品忘忧草| 中日韩美女免费视频网址在线观看 | 一本一道久久综合狠狠老精东影业| 久久精品国产清高在天天线| 国产伦精品一区二区| 日韩视频在线观看国产| 美女国内精品自产拍在线播放| 一区二区三区免费观看| 欧美高清不卡| ●精品国产综合乱码久久久久| 欧美亚洲一区二区在线| 洋洋av久久久久久久一区| 免费亚洲电影在线观看| 亚洲成人资源| 欧美a一区二区| 亚洲欧美欧美一区二区三区| 国产精品国产三级国产专播精品人 | 欧美黑人在线观看| 久久国产精品99国产| 国产麻豆9l精品三级站| 亚洲一区二区黄| 一区二区三区毛片| 国产精品久久久久久久免费软件| 91久久在线观看| 欧美3dxxxxhd| 噜噜噜在线观看免费视频日韩 | 亚洲国产精品电影| 免费久久精品视频| 亚洲一区视频在线| 亚洲免费在线精品一区| 亚洲天堂免费在线观看视频| 欧美日韩色婷婷| 亚洲网站在线| 亚洲一区二区三区三| 国产精品久久午夜| 欧美亚洲自偷自偷| 久久综合国产精品台湾中文娱乐网| 一区久久精品| 欧美高清hd18日本| 欧美色欧美亚洲另类七区| 亚洲一区二区三区乱码aⅴ| 99视频在线精品国自产拍免费观看| 欧美日韩免费一区| 欧美一区深夜视频| 久久久国产一区二区| 亚洲精品久久久久中文字幕欢迎你| 亚洲激情六月丁香| 国产精品美女999| 玖玖玖免费嫩草在线影院一区| 蜜臀av国产精品久久久久| 亚洲级视频在线观看免费1级| 亚洲国产精品成人精品| 国产欧美精品国产国产专区| 免费观看在线综合| 欧美性色aⅴ视频一区日韩精品| 久久综合给合| 欧美人在线观看| 久久成人免费网| 欧美日韩精品免费观看视一区二区| 午夜在线不卡| 欧美激情亚洲综合一区| 欧美一二三视频| 欧美黄在线观看| 久久亚洲一区| 国产精品区一区二区三| 久久久精品日韩| 国产精品嫩草久久久久| 欧美国产视频在线观看| 国产精品入口夜色视频大尺度 | 国模叶桐国产精品一区| 亚洲日本va午夜在线影院| 黑丝一区二区| 亚洲视频 欧洲视频| 91久久在线| 美女性感视频久久久| 欧美一区二区三区日韩视频| 欧美久久综合| 91久久久在线| 伊人久久综合| 欧美一区亚洲| 久久久夜精品| 国产精品一区二区三区四区五区 | 男女精品网站| 免费成人高清在线视频| 国产精品午夜在线| av不卡在线看| 99精品热视频只有精品10| 国产精品入口夜色视频大尺度| 亚洲第一在线| 在线观看亚洲精品| 久久久激情视频| 欧美自拍偷拍午夜视频| 国产精品自拍在线| 亚洲一区二区在线| 亚洲男女自偷自拍| 国产精品人人做人人爽| 亚洲一二三区精品| 亚洲免费在线播放| 久久久久免费视频| 国语精品中文字幕| 麻豆亚洲精品| 欧美大成色www永久网站婷| 一区视频在线播放| 卡通动漫国产精品| 欧美freesex交免费视频| 黄色成人片子| 免费在线日韩av| 亚洲国产成人精品女人久久久| 日韩亚洲精品视频| 欧美日韩国产综合视频在线| 久久久国产一区二区三区| 激情伊人五月天久久综合| 久久xxxx精品视频| 欧美国产日韩在线观看| 亚洲无线视频| 国产精品日韩专区| 久久香蕉精品| 亚洲欧洲三级| 亚洲欧美美女| 亚洲第一色中文字幕| 欧美激情导航| 亚洲一区二区免费在线| 久久野战av| 一本色道久久88综合日韩精品| 国产精品国产三级国产aⅴ入口| 午夜精品视频在线观看| 麻豆国产精品777777在线| 一区二区三区视频观看| 国产欧美日韩视频一区二区| 蜜桃精品久久久久久久免费影院| 亚洲视频在线视频| 噜噜噜久久亚洲精品国产品小说| 一本久久综合亚洲鲁鲁| 国产欧美欧美| 欧美成人精品激情在线观看| 亚洲主播在线观看| 欧美成人免费全部| 亚洲欧美日韩综合一区| 亚洲欧洲精品一区二区三区波多野1战4 | 国产精品日韩在线一区| 久久久久久久999| 亚洲一区二区三区免费观看| 久久夜色精品亚洲噜噜国产mv| 99综合精品| 亚洲丶国产丶欧美一区二区三区 | 久久资源av| 亚洲一二三级电影| 91久久国产综合久久| 国产麻豆午夜三级精品| 欧美日韩精品伦理作品在线免费观看| 欧美视频在线免费| 欧美中文字幕在线播放| 亚洲精华国产欧美|