Files
Obsidian-Main/04. 專注/C++/C++17.md

1.2 KiB
Raw Blame History

  • 變數宣告的方式變了

    • Old: int a = 3;
    • New: int a {3};
  • if裡面可以宣告變數

    if (auto a {3}; a > b) {
        // Do something
    }
    
  • unique_ptr: 無法複製的指標

    • 傳統方法:
      unique_ptr<uint8_t[]> buffer = new uint8_t[256];
      
    • 新方法:
      auto buffer = std::make_unique<uint8_t[]>(256);
      
  • share_ptr: 可以複製,但要避免循環參考問題

  • 透過refernce傳遞array參數

    • 考慮一個帶有長度的陣列要傳到function裡面但是又希望在function面可以指定陣列長度
      double value[] { 1.0, 2.0, 3.0 };           // Error!
      double value[] { 1.0, 2.0, 3.0, 4.0, 5.0 }; // Pass!
      
      double average(const double (&array)[5]) {
          ...
      }
      
  • std::string_view 代替 const std::string&

Multi-Thread

使用std::async