<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C++函數重載的一點問題

      問題

      #include <iostream>
      #include <vector>
      
      enum A { Value = 1 };
      
      void a(std::vector<int>) {
          std::cout << "a1" << std::endl;
      }
      
      void a(A e) {
          std::cout << "a2:" << e << std::endl;
      }
      
      //void a(int t) {
      //    std::cout << "a3:" << t << std::endl;
      //}
      
      int main() {
          a({});
      //    a({1});
      //    a({Value});
      //    a({1,2});
          return 0;
      }
      

      這段代碼,想想會輸出哪個?

      我會選擇輸出 a1,我想應該有很多人跟我的選擇是一致的。

      因為按照C的習慣,enum A 實際上可能是一個整形,而{}最可能的是個數組,
      最符合直覺的結果肯定是輸出a1

      但實際上,無論用g++還是clang++,輸出的結果都是 a2:0

      分析
      接著上面的代碼,如果在main中寫下面的代碼:

          A c = {};
          std::cout << "A:" << c << std::endl;
      

      它會編譯通過,并始終輸出A:0,這證明enum是可以用{}初始化的

      那其他類型呢?

      是的,幾乎所有的基礎類型都可以
      顯然,編譯器認為,初始化一個enum A,比初始化一個std::vector<int>要簡單,
      在函數重載中,void a(A e)是一個更直接的匹配

      同樣如果注釋void a(A e)函數,將void a(int t)解注釋,應該知道會輸出什么結果了。

      思考1
      這讓我想起了int i(1);這種直接初始化方式。那這與上面的列表初始化有什么不同?

      int i = 1.1;    // 正確
      int i = {1.1};	// 編譯錯誤
      int i(1.1);     // 正確
      

      由此可見,列表初始化會顯得更安全,因為它禁止窄化轉換,推薦在需要嚴格類型檢查時使用。

      但是在c中,有不同的情況

      int i = 1.1;    // 正確
      int i = {1.1};	// 正確
      int i(1.1);     // 錯誤
      

      顯然,c支持基礎類型的列表初始化,并且c也允許a((int){1.1});這種調用方式,這樣語言的語法才是自洽完整的。

      所以,如果一開始的問題答錯了,其實跟c++關系不大,而是對c的認知還差點意思,咱還得學習。
      所謂活到老,學到老

      結論
      在調用重載函數時,需要當心!!!不然很容易出一些難以查找的BUG

      posted @ 2025-02-19 15:58  yxfangcs  閱讀(6)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 无码伊人66久久大杳蕉网站谷歌| 国产在线精品中文字幕| 亚洲色一区二区三区四区| 欧美极品色午夜在线视频| 亚洲无人区码一二三区别| 国产精品无码无卡在线观看久| 色狠狠色婷婷丁香五月| 国产精品小视频一区二页| 亚洲AV无码久久精品日韩| 国产久免费热视频在线观看| 国产精品毛片在线完整版| 精品无码三级在线观看视频| 亚洲欧洲日产国产 最新| 久久精品国产蜜臀av| 色av综合av综合无码网站| 日韩AV高清在线看片| 91国内精品久久精品一本| 久久精品一区二区东京热| 国产成人无码免费视频在线| 夜夜春久久天堂亚洲精品| 久久一本人碰碰人碰| 久久久久久久久18禁秘| 国产视频精品一区 日本| 国产女人和拘做受视频免费| 国产男女黄视频在线观看| 亚洲午夜成人精品电影在线观看| 无套内射极品少妇chinese| 亚洲av乱码久久亚洲精品| 久久精品免视看国产成人| 达日县| 免费无码av片在线观看网站| 激情综合色综合啪啪开心| 少妇伦子伦精品无吗| 亚洲成人一区| 亚欧洲乱码视频一二三区| 中文国产成人精品久久不卡| 国产亚洲精品岁国产精品| 国产成人精品1024免费下载| 亚洲大尺度无码无码专线| 日韩精品亚洲不卡一区二区| 国产亚洲精品自在久久vr|