青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

蝸牛的家
男兒當自強
posts - 48,  comments - 21,  trackbacks - 0
     摘要: If the source and destination overlap, memcpy does not ensure that the original source bytes in the overlapping region are copied before being overwritten. Use memmove to handle overlapping regions
如果原始資料source和目的單元格destination(的地址)重復了。在重復區域的原始source的字節被覆蓋以前,memcpy不能保證這些區域被拷貝。使用memove來處理重復的區域。  閱讀全文
posted @ 2008-10-15 10:31 黑色天使 閱讀(2747) | 評論 (5)編輯 收藏
 多重定義錯誤,一般是頭文件多次包含造成的,可以在LINK參數里面加入/FORCE:MULTIPLE解決
posted @ 2008-10-09 11:03 黑色天使 閱讀(545) | 評論 (0)編輯 收藏
  仔細想想地位卑賤的類型轉換功能(cast),其在程序設計中的地位就象goto語句一樣令人鄙視。但是它還不是無法令人忍受,因為當在某些緊要的關頭,類型轉換還是必需的,這時它是一個必需品。   
  不過C風格的類型轉換并不代表所有的類型轉換功能。   
  一來它們過于粗魯,能允許你在任何類型之間進行轉換。不過如果要進行更精確的類型轉換,這會是一個優點。在這些類型轉換中存在著巨大的不同,例如把一個指向const對象的指針(pointer-to-const-object)轉換成指向非const對象的指針(pointer-to-non-const-object)(即一個僅僅去除const的類型轉換),把一個指向基類的指針轉換成指向子類的指針(即完全改變對象類型)。傳統的C風格的類型轉換不對上述兩種轉換進行區分。(這一點也不令人驚訝,因為C風格的類型轉換是為C語言設計的,而不是為C++語言設計的)。   
  二來C風格的類型轉換在程序語句中難以識別。在語法上,類型轉換由圓括號和標識符組成,而這些可以用在C++中的任何地方。這使得回答象這樣一個最基本的有關類型轉換的問題變得很困難:“在這個程序中是否使用了類型轉換?”。這是因為人工閱讀很可能忽略了類型轉換的語句,而利用象grep的工具程序也不能從語句構成上區分出它們來。   
  C++通過引進四個新的類型轉換操作符克服了C風格類型轉換的缺點,這四個操作符是,   static_cast,   const_cast,   dynamic_cast,   和reinterpret_cast。在大多數情況下,對于這些操作符你只需要知道原來你習慣于這樣寫,   
  (type)   expression   
  而現在你總應該這樣寫:   
  static_cast<type>(expression)   
  例如,假設你想把一個int轉換成double,以便讓包含int類型變量的表達式產生出浮點數值的結果。如果用C風格的類型轉換,你能這樣寫:   
  int   firstNumber,   secondNumber;   
  ...   
  double   result   =   ((double)firstNumber)/secondNumber;   
  如果用上述新的類型轉換方法,你應該這樣寫:   
  double   result   =   static_cast<double>(firstNumber)/secondNumber;   
  這樣的類型轉換不論是對人工還是對程序都很容易識別。   
  static_cast在功能上基本上與C風格的類型轉換一樣強大,含義也一樣。它也有功能上限制。例如,你不能用static_cast象用C風格的類型轉換一樣把struct轉換成int類型或者把double類型轉換成指針類型,另外,static_cast不能從表達式中去除const屬性,因為另一個新的類型轉換操作符const_cast有這樣的功能。  
  其它新的C++類型轉換操作符被用在需要更多限制的地方。const_cast用于類型轉換掉表達式的const或volatileness屬性。通過使用const_cast,你向人們和編譯器強調你通過類型轉換想做的只是改變一些東西的constness或者   volatileness屬性。這個含義被編譯器所約束。如果你試圖使用const_cast來完成修改constness   或者volatileness屬性之外的事情,你的類型轉換將被拒絕。下面是一些例子:   
  class   Widget   {   ...   };   
  class   SpecialWidget:   public   Widget   {   ...   };   
  void   update(SpecialWidget   *psw);   
  SpecialWidget   sw;                                 //   sw   是一個非const   對象。   
  const   SpecialWidget&   csw   =   sw;       //   csw   是sw的一個引用   
                                                                  //   它是一個const   對象     
  update(&csw);     //   錯誤!不能傳遞一個const   SpecialWidget*   變量   
                                //   給一個處理SpecialWidget*類型變量的函數     
  update(const_cast<SpecialWidget*>(&csw));   
  //   正確,csw的const被顯示地轉換掉(   
  //   csw和sw兩個變量值在update   
  //函數中能被更新)     
  update((SpecialWidget*)&csw);   
                                                    //   同上,但用了一個更難識別   
                                                    //的C風格的類型轉換   
  Widget   *pw   =   new   SpecialWidget;     
  update(pw);                   //   錯誤!pw的類型是Widget*,但是   
                                          //   update函數處理的是SpecialWidget*類型     
  update(const_cast<SpecialWidget*>(pw));   
                                          //   錯誤!const_cast僅能被用在影響   
                                          //   constness   or   volatileness的地方上。,   
                                          //   不能用在向繼承子類進行類型轉換。   
  到目前為止,const_cast最普通的用途就是轉換掉對象的const屬性。   
  第二種特殊的類型轉換符是dynamic_cast,它被用于安全地沿著類的繼承關系向下進行類型轉換。這就是說,你能用dynamic_cast把指向基類的指針或引用轉換成指向其派生類或其兄弟類的指針或引用,而且你能知道轉換是否成功。失敗的轉換將返回空指針(當對指針進行類型轉換時)或者拋出異常(當對引用進行類型轉換時):   
  Widget   *pw;   
  ...   
  update(dynamic_cast<SpecialWidget*>(pw));   
  //   正確,傳遞給update函數一個指針   
  //   是指向變量類型為SpecialWidget的pw的指針   
  //   如果pw確實指向一個對象,   
  //   否則傳遞過去的將使空指針。   
  void   updateViaRef(SpecialWidget&   rsw);   
  updateViaRef(dynamic_cast<SpecialWidget&>(*pw));   
                                                    //正確。   傳遞給updateViaRef函數   
                                                    //   SpecialWidget   pw   指針,如果pw     
                                                    //   確實指向了某個對象   
                                                    //   否則將拋出異常   
  dynamic_casts在幫助你瀏覽繼承層次上是有限制的。它不能被用于沒有虛函數的類型上,因為他要得到類的運行時信息,這個多保存于Vtablez中,也不能用它來轉換掉constness:   
  int   firstNumber,   secondNumber;   
  ...   
  double   result   =   dynamic_cast<double>(firstNumber)/secondNumber;   
                                                    //   錯誤!沒有繼承關系   
  const   SpecialWidget   sw;   
  ...   
  update(dynamic_cast<SpecialWidget*>(&sw));   
                                                    //   錯誤!   dynamic_cast不能轉換   
                                                    //   掉const。   
  如你想在沒有繼承關系的類型中進行轉換,你可能想到static_cast。如果是為了去除const,你總得用const_cast。   
  這四個類型轉換符中的最后一個是reinterpret_cast。使用這個操作符的類型轉換,其的轉換結果幾乎都是執行期定義(implementation-defined)。因此,使用reinterpret_casts的代碼很難移植。   
  reinterpret_casts的最普通的用途就是在函數指針類型之間進行轉換。例如,假設你有一個函數指針數組:  
  typedef   void   (*FuncPtr)();             //   FuncPtr   is   一個指向函數   
                                                                  //   的指針,該函數沒有參數   
  //   返回值類型為void   
  FuncPtr   funcPtrArray[10];               //   funcPtrArray   是一個能容納   
                                                                  //   10個FuncPtrs指針的數組   
  讓我們假設你希望(因為某些莫名其妙的原因)把一個指向下面函數的指針存入funcPtrArray數組:   
  int   doSomething();   
  你不能不經過類型轉換而直接去做,因為doSomething函數對于funcPtrArray數組來說有一個錯誤的類型。在FuncPtrArray數組里的函數返回值是void類型,而doSomething函數返回值是int類型。   
  funcPtrArray[0]   =   &doSomething;           //   錯誤!類型不匹配     
  reinterpret_cast可以讓你迫使編譯器以你的方法去看待它們:   
  funcPtrArray[0]   =                                       //   this   compiles   
      reinterpret_cast<FuncPtr>(&doSomething);   
  轉換函數指針的代碼是不可移植的(C++不保證所有的函數指針都被用一樣的方法表示),在一些情況下這樣的轉換會產生不正確的結果(參見條款M31),所以你應該避免轉換函數指針類型,除非你處于著背水一戰和尖刀架喉的危急時刻。一把鋒利的刀。一把非常鋒利的刀。   
  如果你使用的編譯器缺乏對新的類型轉換方式的支持,你可以用傳統的類型轉換方法代替static_cast,   const_cast,   以及reinterpret_cast。也可以用下面的宏替換來模擬新的類型轉換語法:   
  #define   static_cast(TYPE,EXPR)               ((TYPE)(EXPR))   
  #define   const_cast(TYPE,EXPR)                 ((TYPE)(EXPR))   
  #define   reinterpret_cast(TYPE,EXPR)     ((TYPE)(EXPR))   
  你可以象這樣使用使用:   
  double   result   =   static_cast(double,   firstNumber)/secondNumber;   
  update(const_cast(SpecialWidget*,   &sw));   
  funcPtrArray[0]   =   reinterpret_cast(FuncPtr,   &doSomething);   
  這些模擬不會象真實的操作符一樣安全,但是當你的編譯器可以支持新的的類型轉換時,它們可以簡化你把代碼升級的過程。   
  沒有一個容易的方法來模擬dynamic_cast的操作,但是很多函數庫提供了函數,安全地在派生類與基類之間進行類型轉換。如果你沒有這些函數而你有必須進行這樣的類型轉換,你也可以回到C風格的類型轉換方法上,但是這樣的話你將不能獲知類型轉換是否失敗。當然,你也可以定義一個宏來模擬dynamic_cast的功能,就象模擬其它的類型轉換一樣:   
  #define   dynamic_cast(TYPE,EXPR)           (TYPE)(EXPR)   
  請記住,這個模擬并不能完全實現dynamic_cast的功能,它沒有辦法知道轉換是否失敗。   
  我知道,是的,我知道,新的類型轉換操作符不是很美觀而且用鍵盤鍵入也很麻煩。如果你發現它們看上去實在令人討厭,C風格的類型轉換還可以繼續使用并且合法。然而,正是因為新的類型轉換符缺乏美感才能使它彌補了在含義精確性和可辨認性上的缺點。并且,使用新類型轉換符的程序更容易被解析(不論是對人工還是對于工具程序),它們允許編譯器檢測出原來不能發現的錯誤。這些都是放棄C風格類型轉換方法的強有力的理由。還有第三個理由:也許讓類型轉換符不美觀和鍵入麻煩是一件好事。   
posted @ 2008-09-28 15:12 黑色天使 閱讀(268) | 評論 (0)編輯 收藏
     摘要: 下列語句部分是Mssql語句,不可以在access中使用。 SQL分類:  DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)  DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)  DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK) 首...  閱讀全文
posted @ 2008-09-18 17:47 黑色天使 閱讀(132) | 評論 (0)編輯 收藏
     摘要: int CWnd::RunModalLoop(DWORD dwFlags){ ASSERT(::IsWindow(m_hWnd)); // window must be created ASSERT(!(m_nFlags & WF_MODALLOOP)); // ...  閱讀全文
posted @ 2008-09-02 23:16 黑色天使 閱讀(673) | 評論 (0)編輯 收藏
     摘要:   閱讀全文
posted @ 2008-08-31 01:03 黑色天使| 編輯 收藏
     摘要:   閱讀全文
posted @ 2008-08-26 14:05 黑色天使 閱讀(2383) | 評論 (0)編輯 收藏
     摘要:   閱讀全文
posted @ 2008-08-23 12:22 黑色天使 閱讀(442) | 評論 (0)編輯 收藏
     摘要:   閱讀全文
posted @ 2008-08-23 12:18 黑色天使 閱讀(613) | 評論 (0)編輯 收藏
     摘要:   閱讀全文
posted @ 2008-08-23 01:42 黑色天使 閱讀(390) | 評論 (0)編輯 收藏
僅列出標題
共5頁: 1 2 3 4 5 

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美大片91| 欧美日韩国产一区二区三区地区| 久久国产一区二区三区| 99精品国产在热久久下载| 亚洲国产精品视频一区| 亚洲电影在线看| 亚洲精品五月天| 亚洲伊人伊色伊影伊综合网| 欧美一级欧美一级在线播放| 亚洲女性裸体视频| 久久人人爽爽爽人久久久| 亚洲成色www8888| 亚洲精品123区| 午夜精品成人在线| 免费亚洲视频| 国产精品亚洲网站| 亚洲欧洲精品一区二区三区不卡| 亚洲午夜精品久久久久久app| 欧美一站二站| 亚洲精品视频免费观看| 亚欧成人在线| 国产噜噜噜噜噜久久久久久久久| 亚洲日本va午夜在线影院| 欧美在线电影| 亚洲综合首页| 国产精品揄拍500视频| 亚洲视频每日更新| 91久久极品少妇xxxxⅹ软件| 噜噜噜在线观看免费视频日韩| 国产美女精品视频| 午夜在线视频观看日韩17c| 国产一区二区三区久久精品| 亚洲日产国产精品| 欧美成人一区在线| 欧美国产精品人人做人人爱| 91久久精品国产91久久| 亚洲第一狼人社区| 午夜亚洲福利| 国产欧美精品久久| 久久精品成人| 欧美sm极限捆绑bd| 夜夜嗨av一区二区三区| 99视频一区| 国产亚洲精品v| 亚洲国产精品精华液网站| 欧美视频二区| 久久九九有精品国产23| 欧美成人午夜77777| 久久婷婷一区| 午夜欧美精品久久久久久久| 欧美日韩中国免费专区在线看| 99精品国产在热久久下载| 亚洲欧美一区二区三区久久| 在线观看成人av电影| 亚洲少妇诱惑| 亚洲精品欧美在线| 性色av香蕉一区二区| 亚洲香蕉成视频在线观看| 玖玖在线精品| 欧美在现视频| 欧美日韩视频在线观看一区二区三区 | 亚洲国产成人porn| 亚洲精品综合| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲精品国产视频| 欧美亚洲视频| 欧美一区成人| 国产精品久久精品日日| 亚洲人成啪啪网站| 亚洲毛片在线| 欧美日韩在线精品| 中日韩在线视频| 亚洲资源av| 国产欧美日韩一级| 亚洲在线中文字幕| 午夜免费电影一区在线观看| 欧美特黄一区| 亚洲欧美日韩专区| 久久蜜桃资源一区二区老牛| 亚洲第一福利视频| 欧美欧美天天天天操| 在线亚洲电影| 久久综合福利| 日韩视频在线观看| 国产精品日韩欧美一区| 久久久久久综合| 亚洲二区在线观看| 亚洲欧美不卡| 亚洲国产一区二区视频| 国产精品黄页免费高清在线观看| 亚洲一区在线免费观看| 亚洲第一中文字幕| 亚洲风情亚aⅴ在线发布| 亚洲欧美日韩久久精品| 免费人成精品欧美精品| 99亚洲一区二区| 国产一区二区精品| 欧美激情一区二区三区高清视频| 亚洲小视频在线| 亚洲精品国产精品国自产观看浪潮| 午夜精品久久久久久久男人的天堂| 狠狠色噜噜狠狠狠狠色吗综合| 欧美日本在线观看| 美女视频黄a大片欧美| 午夜在线精品偷拍| 亚洲图片你懂的| 国产精品99久久久久久久久| 亚洲国产精品毛片| 亚洲国产经典视频| 亚洲第一色中文字幕| 欧美成人日本| 亚洲国产高潮在线观看| 欧美国产精品劲爆| 亚洲电影自拍| 亚洲免费观看| 亚洲图片欧洲图片日韩av| 亚洲性视频h| 亚洲欧美日韩精品久久亚洲区| 亚洲一区国产精品| 久久精品在线播放| 免费成人av在线| 欧美日韩午夜在线| 国产日韩av在线播放| 国内成+人亚洲| 日韩视频一区二区在线观看 | 欧美高清视频免费观看| 亚洲福利免费| 午夜在线播放视频欧美| 久久在线视频在线| 亚洲高清av| 午夜综合激情| 欧美日本在线播放| 91久久精品一区二区别| 亚洲日本欧美在线| 午夜精品av| 亚洲国产精品精华液网站| 亚洲一二三区在线| 欧美—级a级欧美特级ar全黄| 国产精品美女久久久久久免费| 亚洲黄色尤物视频| 久久久久久亚洲精品不卡4k岛国| 91久久黄色| 欧美xart系列高清| 极品日韩久久| 欧美va亚洲va香蕉在线| 亚洲一区二区在线视频| 欧美日韩国产综合久久| 亚洲黄色在线| 久久九九国产精品| 午夜老司机精品| 国产亚洲免费的视频看| 午夜在线电影亚洲一区| 亚洲欧美另类国产| 国产偷国产偷精品高清尤物| 香蕉久久精品日日躁夜夜躁| 亚洲精品美女91| 欧美日韩在线精品一区二区三区| 亚洲电影免费观看高清完整版在线观看| 亚洲欧美国产精品va在线观看| 99国产精品一区| 国产欧美日韩综合| 欧美成人亚洲成人| 欧美日韩国产综合视频在线| 亚洲影院免费观看| 性色av一区二区三区在线观看| 国产精品欧美一区二区三区奶水| 欧美亚洲综合网| 欧美国产高潮xxxx1819| 午夜精品福利在线| 久久综合久久综合久久| 亚洲欧美卡通另类91av| 久久综合给合久久狠狠色| 亚洲视频999| 亚洲综合99| 欧美大片免费| 久久夜色精品国产亚洲aⅴ| 欧美国产日韩一二三区| 久久久久亚洲综合| 国产精品久久久久久久免费软件| 老司机精品视频网站| 国产精品久久久爽爽爽麻豆色哟哟| 美女主播一区| 在线观看一区二区视频| 香蕉视频成人在线观看| 午夜视频一区在线观看| 欧美日本免费| 一区二区福利| 欧美亚洲在线播放| 国内精品久久久久影院色| 性欧美xxxx视频在线观看| 亚欧成人在线| 黑丝一区二区三区| 美女黄毛**国产精品啪啪| 欧美激情网站在线观看| 亚洲美女精品成人在线视频| 蜜臀久久99精品久久久画质超高清| 久久成人羞羞网站| 依依成人综合视频| 欧美精品一区二区高清在线观看| 91久久久在线|