• <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>

            MySpace

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              18 隨筆 :: 2 文章 :: 10 評(píng)論 :: 0 Trackbacks

              當(dāng)將一個(gè)派生類強(qiáng)制轉(zhuǎn)換成基類類型的時(shí)候,轉(zhuǎn)換方式不一樣會(huì)產(chǎn)生不一樣的效果。例如該代碼:static_cast<base&>(*this) ;

            base 是基類,這句代碼是將當(dāng)前對(duì)象強(qiáng)制轉(zhuǎn)化為積累類型的對(duì)象的引用,這樣的話不會(huì)再次調(diào)用基類的構(gòu)造函數(shù)。若轉(zhuǎn)換成基類對(duì)象那就要調(diào)用基類的構(gòu)造函數(shù)并創(chuàng)建出新的對(duì)象來(lái)了。


             

            完整的代碼:

            #ifdef HAVE_CONFIG_H
            #include <config.h>
            #endif

            #include <iostream>
            #include <cstdlib>

            #include "stdio.h"
            #include <string>
            #include <iostream>

            using namespace std;


             class A

             {

             public:

              A():i_(0)

              {

               i_++;

             

               cout << " A::A() is Exce." << endl;

              }

             
             A(int i) : i_(i)
             {
              i_++;
             }


              virtual ~A()

              {

               i_--;

             

               cout << " A::~A() is Exce." << endl;

              }

             

             public:
              int i_;

             };

             

             class B : public A

             {

             public:

              B():j_(0)

              {

               j_++;

             

               cout << " B::B() is Exce." << endl;

              }

             
              B(int j) : A(j) , j_(j)
              {
               j_++;
              }
             
             


              ~B()

              {

               j_--;

             

               cout << " B::~B() is Exce." << endl;

              }
             


             public:

              int j_;

             };


            int main(int argc, char *argv[])
            {

              B *b1 = new B(5);
              B *b2 = new B(8);
             
              cout << "before changer " << endl;
             
              cout << "b1.i_ = " << b1->i_ << endl;
             
              cout << "b1.j_ = " << b1->j_ << endl;
             
              static_cast<A&>(*b1) = (*b2);
             
              cout << "affter changer " << endl;
             
              cout << "b1.i_ = " << b1->i_ << endl;
             
              cout << "b1.j_ = " << b1->j_ << endl;
             
              return 0;
             

            }

            輸出的結(jié)果是

            before changer
            b1.i_ = 6
            b1.j_ = 6
            affter changer
            b1.i_ = 9
            b1.j_ = 6

            由此可見(jiàn),  static_cast<A&>(*b1) = (*b2); 類型轉(zhuǎn)換完成之后的賦值操作知識(shí)將基類的變量進(jìn)行了賦值,當(dāng)然,前提是基類沒(méi)有重載“=”運(yùn)算符的時(shí)候,不會(huì)涉及到派生類。

             

             

            posted on 2008-06-04 15:12 yang-chunlei 閱讀(265) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久久久亚洲AV片无码下载蜜桃| 精品国产一区二区三区久久久狼| 国内精品久久久久久久coent| 成人国内精品久久久久影院VR | 国产91久久综合| 久久久久久亚洲精品不卡| 久久免费看黄a级毛片| 久久精品国产网红主播| 久久国产热这里只有精品| 无码人妻少妇久久中文字幕蜜桃 | 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久免费视频网站| 久久香综合精品久久伊人| av国内精品久久久久影院| 国产精品欧美久久久久无广告| 波多野结衣AV无码久久一区| 亚洲国产精品久久久久| 无码人妻久久一区二区三区免费丨 | 2021精品国产综合久久| 久久这里都是精品| 性做久久久久久久久老女人| 97久久精品无码一区二区| 91麻豆国产精品91久久久| 久久久久国产精品三级网| 久久青草国产精品一区| 亚洲综合熟女久久久30p| 亚洲一级Av无码毛片久久精品| 久久99精品久久久久久水蜜桃| 国产精品视频久久| 2022年国产精品久久久久| 欧洲成人午夜精品无码区久久| 国产A级毛片久久久精品毛片| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 97精品伊人久久大香线蕉app| 久久精品水蜜桃av综合天堂| 日日躁夜夜躁狠狠久久AV| 久久久久久无码Av成人影院| 午夜精品久久久久久中宇| 伊人久久大香线蕉av不卡| 熟妇人妻久久中文字幕| 久久99精品久久久久婷婷|