音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

Union的問題解答

出處:3842 發(fā)布于:2008-09-12 08:57:35

  1、聯(lián)合里面那些東西不能存放?
      我們知道,聯(lián)合里面的東西共享內(nèi)存,所以靜態(tài)、引用都不能用,因?yàn)樗麄儾豢赡芄蚕韮?nèi)存。

  2、類可以放入聯(lián)合嗎?
      我們先看一個(gè)例子:
      class Test
      {
      public:
    test():data(0) { }
      private:
          int data;
      };

     typedef union _test
     {
 Test test;  
     }UI;  
  編譯通不過,為什么呢?
   因?yàn)槁?lián)合里不允許存放帶有構(gòu)造函數(shù)、析夠函數(shù)、復(fù)制拷貝操作符等的類,因?yàn)樗麄児蚕韮?nèi)存,編譯器無法保證這些對象不被破壞,也無法保證離開時(shí)調(diào)用析夠函數(shù)。

  3、又是匿名惹的禍??
   我們先看下一段代碼: 
 class test
 {
        public:
             test(const  char* p);
             test(int in);
             const operator char*() const {return data.ch;}
             operator long() const {return data.l;}
        private:
     enum type {Int, String };
            union
     {
  const char* ch;
  int i;
      }datatype;
      type stype;
      test(test&);
      test& operator=(const test&);
        };
       test::test(const  char *p):stype(String),datatype.ch(p)     { }
       test::test(int in):stype(Int),datatype.l(i)     { }
  看出什么問題了嗎?呵呵,編譯通不過。為什么呢?難道datatype.ch(p)和datatype.l(i)有問題嗎?
  在構(gòu)造函數(shù)中當(dāng)然要調(diào)用其成員的構(gòu)造函數(shù),所以其要去調(diào)用datatype成員的構(gòu)造函數(shù),但是他沒有構(gòu)造函數(shù)可調(diào)用,所以出錯(cuò)。
  注意了,這里可并不是匿名聯(lián)合!因?yàn)樗竺婢o跟了個(gè)data!

  4、如何有效的防止訪問出錯(cuò)?
  使用聯(lián)合可以節(jié)省內(nèi)存空間,但是也有一定的風(fēng)險(xiǎn):通過一個(gè)不適當(dāng)?shù)臄?shù)據(jù)成員獲取當(dāng)前對象的值!例如上面的ch、i交錯(cuò)訪問。
  為了防止這樣的錯(cuò)誤,我們必須定義一個(gè)額外的對象,來跟蹤當(dāng)前被存儲(chǔ)在聯(lián)合中的值得類型,我們稱這個(gè)額外的對象為:union的判別式。
  一個(gè)比較好的經(jīng)驗(yàn)是,在處理作為類成員的union對象時(shí),為所有union數(shù)據(jù)類型提供一組訪問函數(shù)。

   



  
關(guān)鍵詞:Union的問題解答TESTCHAR  TYPE

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

intest檢測中心!今日分享:瘋狂星期五,檢測一條龍服務(wù)!
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!