亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

詳解C++編程中的sizeof運算符與typeid運算符

2020-05-23 14:10:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++編程中的sizeof運算符與typeid運算符,是C++入門學習中的基礎知識,需要的朋友可以參考下
 

sizeof 運算符
產生與 char 類型的大小有關的操作數大小。
語法

sizeof unary-expression sizeof ( type-name )

備注
sizeof 運算符的結果為 size_t 類型,它是包含文件 STDDEF.H 中定義的整數類型。利用此運算符,你可以避免在程序中指定依賴于計算機的數據大小。
sizeof 的操作數可以是下列項之一:
類型名稱。若要將 sizeof 用于類型名稱,則該名稱必須用括號括起。
一個表達式。當用于表達式時,無論是否使用括號都可指定 sizeof。不計算表達式。
當 sizeof 運算符應用到 char 類型的對象時,它將生成 1。當 sizeof 運算符應用到數組時,它將產生該數組的字節總數,而非由數組標識符表示的指針的大小。若要獲取由數組標識符表示的指針的大小,請將其作為參數傳遞給使用 sizeof 的函數。例如:

#include <iostream>using namespace std;size_t getPtrSize( char *ptr ){  return sizeof( ptr );}int main(){  char szHello[] = "Hello, world!";  cout << "The size of a char is: "     << sizeof( char )     << "/nThe length of " << szHello << " is: "     << sizeof szHello     << "/nThe size of the pointer is "     << getPtrSize( szHello ) << endl;}

示例輸出

The size of a char is: 1The length of Hello, world! is: 14The size of the pointer is 4

當 sizeof 運算符應用到 class、struct 或 union 類型時,結果為該類型的對象中的字節數,以及添加的用于在字邊界上對齊成員數據的任何填充。結果不一定對應于通過將各個成員的存儲需求相加計算出的大小。 /Zp 編譯器選項和 pack 雜注會影響成員的對齊邊界。
sizeof 運算符永遠不會產生 0,即使對于空類也是如此。
sizeof 運算符不能用于以下操作數:
函數。(但是,sizeof 可應用于指向函數的指針。)
位域。
未定義的類。
void 類型。
動態分配的數組。
外部數組。
不完整類型。
帶括號的不完整類型的名稱。
當 sizeof 運算符應用于引用時,結果與 sizeof 應用到對象本身時的結果相同。
如果某個未確定大小的數組是結構的最后一個元素,則 sizeof 運算符將返回沒有該數組的結構的大小。
sizeof 運算符通常用于通過使用以下形式的表達式計算數組中的元素數量:
sizeof array / sizeof array[0]

typeid 運算符
語法

   typeid(    type-id    )typeid( expression )( expression )

備注
typeid 運算符允許在運行時確定對象的類型。
typeid 的結果是 const type_info&。該值是對表示 type-id 或 expression 的類型的 type_info 對象的引用,具體取決于所使用的 typeid 的形式。
typeid 運算符不適用于托管類型(抽象聲明符或實例)。
typeid 運算符在應用于多態類類型的左值時執行運行時檢查,其中對象的實際類型不能由提供的靜態信息確定。此類情況是:
對類的引用
使用 * 取消引用的指針
帶下標的指針(即 [ ])。(請注意,通常情況下,將下標與指向多態類型的指針一起使用不安全。)
如果 expression 指向基類類型,但該對象實際上是派生自該基類的類型,則派生類的 type_info 引用是結果。 expression 必須指向多態類型(具有虛函數的類)。否則,結果是 expression 中引用的靜態類的 type_info。此外,必須取消引用指針以使用它指向的對象。如果未取消引用指針,結果將是指針的 type_info,而不是它指向的內容。例如:

// expre_typeid_Operator.cpp// compile with: /GR /EHsc#include <iostream>#include <typeinfo.h>class Base {public:  virtual void vvfunc() {}};class Derived : public Base {};using namespace std;int main() {  Derived* pd = new Derived;  Base* pb = pd;  cout << typeid( pb ).name() << endl;  //prints "class Base *"  cout << typeid( *pb ).name() << endl;  //prints "class Derived"  cout << typeid( pd ).name() << endl;  //prints "class Derived *"  cout << typeid( *pd ).name() << endl;  //prints "class Derived"  delete pd;}

如果 expression 正在取消引用某個指針,并且該指針的值是零, typeid 將引發 bad_typeid 異常。如果該指針沒有指向有效的對象,則會引發 __non_rtti_object 異常來指示嘗試了分析引發錯誤(如訪問沖突)的 RTTI,因為該對象在某種程度上是無效的(無效的指針或代碼不是用 /GR 編譯的)。
如果 expression 既不是指針也不是對對象的基類的引用,則結果是表示 expression 的靜態類型的 type_info 引用。表達式的 static type 將引用在編譯時已知的表達式的類型。在計算表達式的靜態類型時,將忽略執行語義。此外,在確定表達式的靜態類型時,將忽略引用(如果可能):

// expre_typeid_Operator_2.cpp#include <typeinfo>int main(){  typeid(int) == typeid(int&); // evaluates to true}typeid 還可在模板中使用以確定模板參數的類型:// expre_typeid_Operator_3.cpp// compile with: /c#include <typeinfo>template < typename T > T max( T arg1, T arg2 ) {  cout << typeid( T ).name() << "s compared." << endl;  return ( arg1 > arg2 ? arg1 : arg2 );}
 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩国产成人| 美女性感视频久久久| 欧美黑人狂野猛交老妇| 在线视频中文亚洲| 精品少妇v888av| 国产精品久久久久久超碰| 久久天堂电影网| 亚洲精品中文字| 久久精品色欧美aⅴ一区二区| 亚洲免费视频观看| 日韩精品在线影院| 国产精品av免费在线观看| 亚洲美女免费精品视频在线观看| 国模叶桐国产精品一区| 国产精品看片资源| 亚洲精品日韩激情在线电影| 九色精品免费永久在线| 欧美电影免费观看电视剧大全| 欧美福利小视频| 91久久久久久久久久久久久| www.亚洲天堂| 精品国产视频在线| 国产精品入口夜色视频大尺度| 欧美猛男性生活免费| 2019中文在线观看| 美女精品久久久| 亚洲a在线播放| 久久精品美女视频网站| 成人中心免费视频| 欧美另类在线观看| 成人天堂噜噜噜| 欧美最顶级丰满的aⅴ艳星| 亚洲精选中文字幕| 日本最新高清不卡中文字幕| 国产精品久久久久久久久久99| 欧美视频在线看| 国产一区二区三区欧美| 狠狠久久五月精品中文字幕| 亚洲成人1234| 在线视频欧美日韩精品| 色久欧美在线视频观看| 欧美日韩国产中文精品字幕自在自线| 一本色道久久88亚洲综合88| 日韩av成人在线| 亚洲国产精品人人爽夜夜爽| 中文字幕亚洲一区二区三区五十路| 久久久久亚洲精品| 中日韩美女免费视频网站在线观看| 91a在线视频| 欧美在线视频免费观看| 色香阁99久久精品久久久| 国产精品91久久久久久| 国产精品电影网站| 国产精品99久久久久久久久| 欧美午夜精品久久久久久久| 亚洲变态欧美另类捆绑| 亚洲毛片在线看| 欧美黄色片视频| 成人激情综合网| 午夜精品一区二区三区在线| 欧美激情18p| 午夜精品一区二区三区在线播放| 欧美日韩免费观看中文| 美日韩精品免费观看视频| 成人黄在线观看| 国产色婷婷国产综合在线理论片a| 日韩一区二区福利| 国产精品pans私拍| 欧美日韩国产999| 亚洲娇小xxxx欧美娇小| 97视频在线播放| 久久频这里精品99香蕉| 亚洲性日韩精品一区二区| 狠狠爱在线视频一区| 欧美在线视频在线播放完整版免费观看| 欧美激情喷水视频| 伊人激情综合网| 国产精品自产拍在线观看中文| 久久精品电影网| 国产一区二区在线免费| 亚洲电影免费观看高清完整版在线观看| 国产一区二区视频在线观看| 日韩经典一区二区三区| 亚洲人成亚洲人成在线观看| 草民午夜欧美限制a级福利片| 久久五月天综合| 亚洲福利视频免费观看| 欧美激情区在线播放| 一区二区三区在线播放欧美| 国产精品久久久久av免费| 国内免费久久久久久久久久久| 91精品国产自产在线| 国产精品精品视频| 欧美肥老妇视频| 久久国产天堂福利天堂| 日韩精品视频免费在线观看| 高清一区二区三区四区五区| 久久久久久久久久久久av| 欧美成人免费一级人片100| 91在线观看免费高清| 欧美影院成年免费版| 色诱女教师一区二区三区| 国产精品最新在线观看| 91伊人影院在线播放| 欧美丝袜一区二区| 国产精品久在线观看| 亚洲欧美一区二区精品久久久| 一区二区三区精品99久久| 国产成人一区二区| 97超碰蝌蚪网人人做人人爽| 5278欧美一区二区三区| 亚洲片国产一区一级在线观看| 亚洲人精选亚洲人成在线| 欧美精品激情blacked18| 黑人巨大精品欧美一区二区三区| 亚洲午夜性刺激影院| 久久久免费电影| 国产精品美女久久| 精品久久久久久中文字幕一区奶水| 777午夜精品福利在线观看| 国产亚洲成av人片在线观看桃| 亚洲第一av在线| 国产视频在线一区二区| 亚洲老司机av| 2019中文字幕免费视频| 日韩av黄色在线观看| 日韩av最新在线观看| 国产精品激情av电影在线观看| 久久久久久久999| 亚洲国产成人久久综合一区| 在线视频国产日韩| 国产精品最新在线观看| 色视频www在线播放国产成人| 色黄久久久久久| 日韩高清电影好看的电视剧电影| 中文字幕日韩高清| 亚洲精品天天看| 亚洲最大福利视频网| 欧美在线国产精品| 国产精品电影观看| 亚洲九九九在线观看| 性欧美办公室18xxxxhd| 国产精品男女猛烈高潮激情| 亚洲精品综合精品自拍| 国产精品男女猛烈高潮激情| 欧美日韩一区二区精品| 日韩欧美在线免费观看| 亚洲精品视频免费| 欧美精品videosex极品1| 久久成年人视频| 日韩av在线一区| 91产国在线观看动作片喷水| 亚洲欧美激情四射在线日| 热久久美女精品天天吊色| 亚洲色图欧美制服丝袜另类第一页| 亚洲视频第一页| 亚洲欧洲在线播放| 亚洲精品成a人在线观看| 美女黄色丝袜一区| 欧美日韩国内自拍| 欧美午夜精品久久久久久久| 亚洲乱亚洲乱妇无码| 久久免费视频在线观看| 懂色av影视一区二区三区|