日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

metaprogramming笔记

發(fā)布時間:2025/3/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 metaprogramming笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

動態(tài)多態(tài)與靜態(tài)多態(tài)

動態(tài)多態(tài):允許我們通過單個基類指針或引用處理多個派生類型的對象. 模板元編程中強(qiáng)調(diào)靜態(tài)多態(tài),允許不同類型的對象以同樣的方式被操縱,只要它們支持某種共通的語法即可.

動態(tài)多態(tài),連同"延遲綁定"或"運(yùn)行期派發(fā)",是面向?qū)ο蟪绦虻年P(guān)鍵特性.靜態(tài)多態(tài)(也稱參數(shù)化多態(tài)),是泛型編程的本質(zhì)要素.

?

在面向?qū)ο蟮木幊涛墨I(xiàn)中將一個帶有大量成員的類稱作blob.類的成員彼此"耦合",因?yàn)樗鼈儽仨毐宦暶髟谝黄?為了避免耦合并提高模塊化程度,應(yīng)該避免使用這種反模式.替代

方式是采用獨(dú)立的元函數(shù)來定義單獨(dú)的traits

?

元數(shù)據(jù):可以被C++編譯期系統(tǒng)操縱的"值"可以被認(rèn)為是元數(shù)據(jù).在模板元編程中,兩種最常見的數(shù)據(jù)是類型和整數(shù)(包括bool)常量. C++的編譯期部分通常被稱為"純函數(shù)式語言"

,因?yàn)樵獢?shù)據(jù)是可變的并且元函數(shù)不可以有任何副作用.

?

多態(tài):由于C++模板并非生來就多態(tài)地處理不同種類的元數(shù)據(jù),因此MPL遵從使用type wrapper來包裝非類型元數(shù)據(jù)的約定.尤其是,數(shù)值型元數(shù)據(jù)被表示為一個類型,該類型具有一個名為::value的

嵌套數(shù)值常量成員

  元函數(shù)

  數(shù)值型元函數(shù)

  無參元函數(shù):一般是作為元函數(shù)特化,解決基礎(chǔ)數(shù)據(jù)類型的問題

?

  Traits:一種通過類模板特化在小片元數(shù)據(jù)之間建立關(guān)聯(lián)的技術(shù). Traits慣用法的一個關(guān)鍵特性是它是非侵入性的:我們可以在不修改被關(guān)聯(lián)項(xiàng)自身的前提下,建立一個新的映射.MPL元函數(shù)可以看做

traits的一個特例,它們對于任何輸入都只有一個結(jié)果值.

?

?

?

變長模板:

  一般講的都是變長類型模板參數(shù),這里是一個變長非類型模板參數(shù)的例子,基本辦法還是一樣的,就是取出一個,然后不斷特化,直到最后剩一個模板參數(shù)

#include<cstdio> template<int...A> struct container{void display(){printf("YIKES\n");} };template<int B, int ...C> struct container<B, C...>{void display(){printf("spec %d\n", B);container<C...> test;test.display();} };template<int C> struct container<C>{void display(){printf("spec %d\n", C);} };

?

轉(zhuǎn)載于:https://www.cnblogs.com/hustxujinkang/p/4982445.html

總結(jié)

以上是生活随笔為你收集整理的metaprogramming笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。