std ref 深入學習

2021-10-12 06:49:35 字數 698 閱讀 5330

我們c++ 11 引用入了std::ref,簡單理解就是把乙個class型別或函式轉成引用型別。我們看如下

class sobject;  

sobject myobj;

auto obj = std::ref(myobj);

現在我們深入看看std::ref到底做了什麼?

以下是vs2019的**(可能去掉了一些不相關的)}

operator _ty& () const

_ty& get() const

private:

_ty* _ptr{};// 6

public:

template auto operator()(_types&&... _args) const

-> decltype(_std invoke(*_ptr, static_cast<_types&&>(_args)...)) };

首先,在 **2 有個斷主 會檢測是不是 object或者函式型別。

重點是  **3 處。_ty& _ref = static_cast<_uty&&>(_val); 把_val轉成乙個右值。然後用  臨時引用變數_ref指向這個右值。

_ptr = _std addressof(_ref); 這裡取出_ref的位址存到 類成員指標變數 _ptr

**4  通過過載 引用&,等來模擬 引用操作。

UIApplication深入學習

新建乙個任意型別的ios應用工程,加入我們在class prefix輸入是tc,我們可以看到工程中生成乙個類 在main函式中,autoreleasepool 函式中 說明 當應用程式將要入非活動狀態執行,在此期間,應用程式不接收訊息或事件。比如來 了。說明 當應用程式入活動狀態執行,這個剛好跟上面...

深入學習CSS

什麼是css?在之前的這篇文章中已經介紹了初步的介紹,詳細請看 div加css進一步講解了css中的內容,先總結如下圖 其實在實際開發中,我們通常採用是外部樣式的匯入,這樣做的好處是對於很對有同樣設計樣式的頁面可以實現樣式的共享,這樣我們不僅僅可以節省了大量的時間,並且也方便我們可以靈活的呼叫的樣式...

block深入學習

block的宣告和使用看上一節就行了。本章主要講block內部的實現過程及原理。block的定義和函式指標非常相似 對比一下 block定義 void someblock 函式指標定義 void functionpionter void functionname 當然區別還是有的,block的返回型...