很遺憾,原始代碼未仔細整理,只留有分享給別人的截圖,來源於學習c11時的構想
陷阱點:
1、lamda[i]傳值是隻讀複製,不能改,++無效,要用i+1
2、如果加了mutable之後,是可以改了,但改的是副本
3、如果用了引用,lamda內部會改這個值,而且lamda調用是回調,可能有非順序的時序(多線程環境)或者複雜的流程順序,使分析不清楚i的值
建議:lamda捕獲外部變量避免寫操作,必要時,外部調用也要同步爲宜,也就是等着lamda調用結束。
這裏就是介紹了多種可調用對象以及如何統一管理,統一轉換爲std::function
explicit隱式轉換聲明加上,避免隱式轉換
輸出一個是6,一個是7,也就是函數默認參數如果不一致,即使聲明瞭虛函數覆蓋了,也會使用不同的默認值
名稱覆蓋,純函數名,不含參數,重載也無效,在從重繼承之下,容易出現,比如id name、deal等不帶有具體差異化操作的接口上
聲明虛函數導致移動拷貝無效,要避免。但實際中使用的類,基本都需要析構。所以要合理設計,使複製較慢的類避免拷貝。
模板返回類型依賴參數時,是無法定義返回類型的,之前的做法多指向基類或void*,新特性的尾置返回類型解決了這個問題
-> 後面表示返回類型,通過decltype獲取,獲取的是 引用類型,通過std::remove_refercence去除引用
可以傳遞數組引用了,注意,函數內獲取sizeof(arr)返回指針已經不再絕對成立了