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++相關

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


          網站導航:
           
          主站蜘蛛池模板: 于都县| 行唐县| 鄂伦春自治旗| 华容县| 临安市| 延庆县| 金溪县| 尉犁县| 梅河口市| 汕尾市| 阳朔县| 马龙县| 昆明市| 武隆县| 彩票| 维西| 石河子市| 乌兰县| 札达县| 福贡县| 舞钢市| 辽中县| 临漳县| 元江| 南雄市| 黄石市| 和田县| 光山县| 宣化县| 富顺县| 泊头市| 吉安市| 托克逊县| 崇仁县| 铜梁县| 石棉县| 洪洞县| 桦南县| 平潭县| 溆浦县| 宁南县|