天天爱天天做天天做天天吃中文|久久综合给久合久久综合|亚洲视频一区二区三区|亚洲国产综合精品2022

  • 
    
    <delect id="ixd07"></delect>

      汶上信息港

      標題: 類運算符和友元運算符 [打印本頁]

      作者: hbhdgpyz    時間: 2008-9-29 20:20
      標題: 類運算符和友元運算符
      <P>因為在C++中我們要特別注意類要符合<FONT color=#0000ff>數據封裝</FONT>的要求,這就使運算符重載時訪問類的私有成員出現(xiàn)障礙,要解決這個問題,就用到了<FONT color=#0000ff>友元運算符</FONT>和<FONT color=#0000ff>類運算符</FONT>。</P># c  M" d9 Y& |3 a2 t' D( [& v
      <P><FONT color=#0000ff>友元運算符</FONT>:上一章我們學過了<FONT color=#0000ff>友元函數</FONT>,其實友元運算符重載就是相當于定義一個友元函數,而這個函數是運算符重載的函數,<FONT color=#0000ff>友元函數</FONT>事實上是一個一般的函數,它沒有this指針,但他可以訪問類(定義了此友元函數的類)中的私有成員。其他的一般函數是不能訪問類中的私有成員的。</P>
      ! _; K% Q/ \! {<P><FONT color=#0000ff>類運算符</FONT>:還有另一種方法可以訪問類的私有成員,那就是運用<FONT color=#0000ff>類運算符重載</FONT>,這與友元運算符重載有何<FONT color=#ff0000>區(qū)別</FONT>呢? 區(qū)別就在于,這個函數首先是<FONT color=#0000ff>類的成員函數(</FONT>不是一般函數),因為它是類的成員函數,自然就可以訪問該類的私有成了,然后它是一個<FONT color=#0000ff>運算符函數</FONT>,這樣就可以對運算符進行重載,二者的<FONT color=#0000ff>參數表</FONT>有所不同,友元運算符的函數參數表包括參加運算的所有對象,而類運算符則的參數表的參數是除本身以外的參加運算的對象,如有complex類的一個加法運算z=x+y;則友元運算符函數應被解釋為z=operator +(x,y) ;類運算符則是z=x.operator +(y);后者只有一個參數。</P>1 N' h. c9 W8 m+ T$ W
      <P>另外,<FONT color=#ff0000>什么時候用類運算符或用友元運算符呢</FONT>?如果運算符所需的操作數,尤其是和一個數希望進行<FONT color=#0000ff>隱式類型轉換</FONT>時,應該用<FONT color=#0000ff>友元運算符重載</FONT>;如果一個運算符的操作需要<FONT color=#0000ff>修改類對象的狀態(tài)</FONT>,則應當使用<FONT color=#0000ff>類運算符</FONT>。注意<FONT face=黑體>=、()、[]、-&gt;</FONT>這4個運算符<FONT color=#ff0000>只能用類運算符重載</FONT>。(</P>




      歡迎光臨 汶上信息港 (http://vancelump.com/) Powered by Discuz! X3.5