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


            久久久久综合国产欧美一区二区| 99国产欧美精品久久久蜜芽| 中文精品久久久久国产网址| 9999国产精品欧美久久久久久| 精品久久久久国产免费 | 久久99精品国产| 色诱久久av| 久久精品成人免费看| 免费一级做a爰片久久毛片潮 | 狠狠色丁香久久婷婷综合_中| 久久成人国产精品免费软件| 国产99久久九九精品无码| 久久人人爽人人爽人人爽| 一本伊大人香蕉久久网手机| 热99RE久久精品这里都是精品免费| 久久精品男人影院| 色欲av伊人久久大香线蕉影院| 久久综合九色综合97_久久久| 久久天天躁狠狠躁夜夜2020一| 久久精品国产99久久香蕉| 久久婷婷五月综合成人D啪| 久久精品国产半推半就| 久久国产劲爆AV内射—百度| 久久久久久一区国产精品| 国产精品久久久久aaaa| 久久久久免费看成人影片| 久久久久亚洲AV综合波多野结衣 | 久久se精品一区二区影院| 久久精品国产亚洲AV嫖农村妇女| 免费精品久久久久久中文字幕| 欧美亚洲国产精品久久蜜芽| 久久久久久午夜成人影院| 亚洲精品无码久久一线| 久久精品国产久精国产果冻传媒 | 精品久久久久久99人妻| 国产精品日韩深夜福利久久| 99久久99久久精品国产片| 97精品国产97久久久久久免费| 大蕉久久伊人中文字幕| 久久精品国产亚洲AV不卡| 久久亚洲中文字幕精品一区|