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

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            C++中關于類型的一些術語

            ?本文主要介紹一下C++標準中關于類型的一些術語。如果文中有錯誤或遺漏之處,敬請指出,謝謝!
            ?? 作者: tyc611, 2007-01-10?

            From:http://blog.chinaunix.net/u/18517/showart_229492.html

            1. CV-qualifiers(CV限定符)
              ?? CV-qualifiers有三種:const-qualifier(const限定符)、volatile-qualifier(volatile限定符)、以及const-volatile-qualifier(const-volatile限定符)。

              ?? 用CV-qulifiers限定和未被CV-qulifiers限定的類型是不同的類型,但它們有相同的表示和對齊方式。

              ?? const類對象的非靜態(tài)、非mutable、以及非引用數(shù)據(jù)成員是const-qualified;
              ?? volatile類對象的非靜態(tài)、非引用數(shù)據(jù)成員是volatile-qualified;
              ?? const-volatile類對象的非靜態(tài)、非引用數(shù)據(jù)成員是const-volatile-qualified。

              ?? 當CV-qualifiers用于限定數(shù)組類型時,實際上是數(shù)組成員被該CV-qualifiers限定,而非該數(shù)組類型。

              ?? 復合類型并不因其成員被CV-qualifier限定而被該CV-qualifier限定,也就是說,即使復合類型的成員有CV-qualifier限定,該復合類型也不是CV-qualified對象。

              ?? CV-qualifiers中的偏序關系:我們說A比B更多地被CV-qualifiers限定,記作B<A,這種關系如下所示:
              ??
              ?? no CV-qualiifer < const
              ?? no CV-qualifier < volatile
              ?? no CV-qualifier < const-volatile
              ???????? ??? const < const-volatile
              ??????? ? volatile < const-volatile

              ??
            2. incompletely-defind object type——非完整定義對象類型
              ?? 指那些只有聲明沒有定義的類,或者不知大小的數(shù)組,或者其元素是非完整類型的數(shù)組。
            3. incomplete types——非完整類型
              ?? 指非完整定義對象類型和void類型。

              例如:
              class X;??????????? // X 是一個非完整類型
              extern X* xp;?????? // xp是一個指向一個非完整類型的指針
              extern int arr[];?? // arr的類型是非完整的
              typedef int UNKA[]; // UNKA是一個非完整類型
              UNKA* arrp;???????? // arrp是一個指向一個非完整類型的指針

              void foo()
              {
              ?? xp++;?????? // ill-formed: X is incomplete
              ?? arrp++;???? // ill-formed:?incomplete type
              }

              struct X { int i; }; // now X is a complete type
              int arr[10];???????? // now the type of arr is complete
              X x;

              void bar()
              {
              ?? xp = &x;?????? // OK:type is “pointer to X”
              ?? arrp = &arr;?? // ill-formed:?different types
              ?? xp++;????????? // OK: X is complete
              ?? arrp++;??????? // ill-formed:?UNKA can’t be completed
              }



            4. object type——對象類型
              ?? 非函數(shù)類型、非引用類型、非void類型的類型(可以被CV-qualifiers限定),叫對象類型。

            5. scalar type——標量類型(或純量類型)
              ?? 算術類型、枚舉類型、指針類型、成員指針類型(pointer to member types)、以及由CV-qulifiers限定的前面這些類型,都叫做標量類型。

            6. POD types(POD,Plain Old Data)——POD類型
              ?? 標量類型、POD-struct類型、POD-union類型、以及這些類型的數(shù)組或CV-qulifiers限定版本,統(tǒng)稱為POD類型。
              ?? 對于POD類型T的對象,不管這個對象是否擁有類型T的有效值,如果將該對象的底層字節(jié)序列拷貝到一個字符數(shù)組(或者無符號字符數(shù)組)中,再將其拷貝回對象,那么該對象的值與原始值一樣。例如:
              ??

              #define N sizeof(T)
              char buf[N];
              T obj;
              memcpy(buf,&obj, N);
              memcpy(&obj, buf, N); //此時obj的值與原始值相同


              ? 對于任意的POD類型T,如果兩個T指針分別指向兩個不同的對象obj1和obj2,如果用memcpy庫函數(shù)把obj1的值拷貝到obj2,那么obj2將擁有與obj1相同的值。例如:
              ?

              T* p1;
              T* p2;??
              // provided that p1 points to an initialized object

              memcpy(p2, p1,sizeof(T));
              // at this point, every subobject of POD type

              ?????????????????????????? // in *p2 contains?the same value as the

              ???????????????????????????// corresponding subobject in *p1



            7. static type——靜態(tài)類型
              ?? 表達式的靜態(tài)類型是指不考慮程序的執(zhí)行語義,而僅從程序分析所得到的結果類型。表達式的靜態(tài)類型只依賴于它所處的程序,在程序運行時不會改變。

            8. dynamic type——動態(tài)類型
              ?? 左值表達式的動態(tài)類型是指其在類的繼承關系中的最底層派生類(the most derived object)的類型;
              ?? 右值表達式的動態(tài)類型是它的靜態(tài)類型。

              例如,有如下代碼:
              class B {};
              class D: public B {};
              class DD: public D {};

              B* p;
              p = new DD;

              指針p的靜態(tài)類型是B*,而p實際上指向一個B的派生類D的對象,那么*p的動態(tài)類型就是DD。


            ?? 如果文中有錯誤或遺漏之處,敬請指出,謝謝!


            參考資料:
            [1] C++標準文檔:ISO/IEC 14882:1998

            posted on 2007-03-26 15:48 楊粼波 閱讀(302) 評論(0)  編輯 收藏 引用

            久久综合九色欧美综合狠狠| 亚洲午夜久久久影院| 亚洲午夜久久久久久噜噜噜| 亚洲精品国产综合久久一线| 久久精品成人免费观看97| 久久久精品视频免费观看| 久久精品?ⅴ无码中文字幕| 99热都是精品久久久久久| 亚洲一区中文字幕久久| 天天久久狠狠色综合| 国产精品成人久久久久久久| 国产免费久久精品丫丫| 久久夜色撩人精品国产| 国产精品久久久久久久app| 久久精品亚洲AV久久久无码| 人妻丰满AV无码久久不卡 | 91久久婷婷国产综合精品青草| 久久精品国产亚洲av麻豆色欲| 麻豆亚洲AV永久无码精品久久| 国产精品久久自在自线观看| 精品久久久久久久久久中文字幕| 久久亚洲中文字幕精品一区| 97精品伊人久久久大香线蕉| 狠色狠色狠狠色综合久久 | 日韩人妻无码精品久久久不卡| 久久综合给合久久国产免费| 亚洲国产成人久久精品动漫| 久久综合成人网| 久久精品人人做人人妻人人玩| 成人亚洲欧美久久久久 | 久久久精品人妻一区二区三区四 | 久久99国产精品二区不卡| 99久久精品免费| 久久人人爽人人爽人人片AV东京热| 国产精品美女久久久m| 麻豆国内精品久久久久久| 国产午夜福利精品久久2021| 性做久久久久久久久| 一本久久久久久久| 久久综合给合久久狠狠狠97色| 久久国产精品免费|