rockaka's blog

          A Little Progress Every Day

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            24 隨筆 :: 0 文章 :: 26 評論 :: 0 Trackbacks

          class A
          {
          }
          Class B:public A
          {
          }
          A aobject;
          B bobject;

          有關

          (1)aboject=bobject;

          (2)bobject=aboject;

          的說明。

          =============================================================================
          (1)aobject=bobject; 調用default A::operator =,由編譯器自動生成,它的函數聲明大致類似于:A operator = (A rhs),反正=號右邊要求是一個A的對象,bobject作為A的子類對象亦是可行的,只不過傳遞過程中會產生“截斷”。

          (2)bobject=aobject; 調用default B::operator =,也由編譯器自動生成,它的函數聲明大致類似于:B operator = (B rhs),這里=號右邊要求是一個B的對象,aobject這時就不可行了。

          這時,單單重載B::operator =也無濟于事,因為你無法改變operator = 函數參數必須是B對象的這個事實。要實現bobject=aobject;可以重載強制類型轉換函數,也可以利用編譯器隱式類型轉換的能力,如:
          class A
          {
          public:
           A(){}
          };

          class B:public A
          {
          public:
           B(){}
           B(A a){}
          };
          A aobject;
          B bobject;

          int main()
          {
           aobject=bobject;
           bobject=aobject;
           return 0;
          }

          ps:這是我在csdn論壇上的一個問題,感謝  RookieStar(★)(巴巴羅薩) 等網友的回答。

          posted on 2005-07-17 14:16 rockaka 閱讀(751) 評論(0)  編輯  收藏 所屬分類: C++相關

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 昌吉市| 威信县| 平利县| 托克托县| 布尔津县| 新干县| 冕宁县| 日土县| 周宁县| 饶平县| 龙山县| 工布江达县| 福州市| 尚志市| 奉化市| 稷山县| 通河县| 镇安县| 高唐县| 西充县| 奉化市| 定兴县| 琼结县| 武宁县| 紫云| 林州市| 阿城市| 宜宾县| 屏东县| 炉霍县| 芷江| 河池市| 玛纳斯县| 安远县| 合江县| 名山县| 雷山县| 铜川市| 密云县| 平泉县| 朝阳县|