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 閱讀(748) 評論(0)  編輯  收藏 所屬分類: C++相關

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


          網站導航:
           
          主站蜘蛛池模板: 禹城市| 琼海市| 祁阳县| 清涧县| 宜黄县| 改则县| 五峰| 东城区| 屏南县| 洞头县| 六安市| 龙井市| 辽源市| 枞阳县| 承德县| 晋宁县| 苍溪县| 营口市| 三江| 镇康县| 嵊泗县| 从江县| 深泽县| 綦江县| 嘉义县| 和顺县| 灵川县| 高平市| 伊川县| 孟津县| 重庆市| 阿坝县| 北碚区| 玉溪市| 桂平市| 鄱阳县| 来安县| 民县| 沙坪坝区| 益阳市| 栖霞市|