<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## Any ### 頭文件: `"boost/any.hpp"` 類 `any` 允許對任意類型進行類型安全的存儲和取回。不象無類類型,`any` 保存了類型信息,并且不會讓你在不知道正確類型的情況下獲得存入的值。當然,有辦法可以讓你詢問關于類型的信息,也有測試保存的值的方法,但最終,調用者必須知道在 `any` 對象中的值的真實類型,否則不能訪問`any`。可以把 `any` 看作為上鎖的安全性。沒有正確的鑰匙,你不能進入其中。`any` 對它所保存的類型有以下要求: * CopyConstructible 它必須可以復制這個類型 * Non-throwing destructor 就象所有析構函數應該的那樣! * Assignable 為了保證強異常安全(不符合可賦值要求的類型也可以用于 `any`, 但沒有強異常安全的保證) 以下是 `any` 的公有接口: ``` namespace boost { class any { public: any(); any(const any&); template<typename ValueType> any(const ValueType&); ~any(); any& swap(any &); any& operator=(const any&); template<typename ValueType> any& operator=(const ValueType&); bool empty() const; const std::type_info& type() const; }; } ``` ### 成員函數 ``` any(); ``` 缺省構造函數創建一個空的 `any` 實例,即一個不含有值的 `any`。當然,你無法從一個空的`any`中取回值,因為沒有值存在。 ``` any(const any& other); ``` 創建一個已有 `any` 對象的獨立拷貝。`other` 中含有的值被復制并存入 `this`. ``` template<typename ValueType> any(const ValueType&); ``` 這個模板構造函數存入一個傳入的`ValueType`類型參數的拷貝。參數是一個 `const` 引用,因此傳入一個臨時對象來存入`any`是合法的。注意,該構造函數不是 explicit 的,如果是的話, `any` 會難以使用,而且也不會增加安全性。 ``` ~any(); ``` 析構函數銷毀含有的值,但注意,由于對一個裸指針的析構不會調用operator `delete` 或 operator `delete[]` ,所以在`any`中使用指針時,你應該把裸指針包裝成一個象 `shared_ptr` (見 "[Library 1](../Text/content.html#ch01): [Smart_ptr 1](../Text/content.html#ch01)") 那樣的智能指針。 ``` any& swap(any& other); ``` 交換存在兩個 `any` 對象中的值。 ``` any& operator=(const any& other); ``` 如果`any`實例非空,則丟棄所存放的值,并存入`other`值的拷貝。 ``` template<typename ValueType> any& operator=(const ValueType& value); ``` 如果`any`實例非空,則丟棄所存放的值,并存入 `value` 的一份拷貝,`value`可以是任意符合`any`要求的類型。 ``` bool empty() const; ``` 給出`any`實例當前是否有值,不管是什么值。因而,當`any`持有一個指針時,即使該指針值為空,則 `empty` 也返回 `false` 。 ``` const std::type_info& type() const; ``` 給出所存值的類型。如果 `any` 為空,則類型為 `void`. ### 普通函數 ``` template<typename ValueType> ValueType any_cast(const any& operand); ``` `any_cast` 讓你訪問`any`中存放的值。參數為需要取回值的 `any` 對象。如果類型 `ValueType` 與所存值不符,`any` 拋出一個 `bad_any_cast` 異常。請注意,這個語法有點象 `dynamic_cast`. ``` template<typename ValueType> const ValueType* any_cast(const any* operand); ``` `any_cast` 的一個重載,接受一個指向 `any` 的指針,并返回一個指向所存值的指針。如果 `any` 中的類型不是 `ValueType`, 則返回一個空指針。請再次注意,這個語法也有點象 `dynamic_cast`. ``` template<typename ValueType> ValueType* any_cast(any* operand); ``` `any_cast` 的另一個重載,與前一個版本相似,但前一個版本使用 `const` 指針的參數并返回 `const` 指針,這個版本則不是。 ### 異常 ``` bad_any_cast ``` 當試圖將一個`any`對象轉換為該對象所存類型以外的其它類型,將拋出該異常。`bad_any_cast` 派生自 `std::bad_cast`. 注意,使用指針參數調用 `any_cast` 時,將不拋出異常(類似于對指針使用 `dynamic_cast` 時返回空指針一樣),反之對引用類型使用 `dynamic_cast` 則會在失敗時拋出異常。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看