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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

metaprogramming笔记

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

動態多態與靜態多態

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

動態多態,連同"延遲綁定"或"運行期派發",是面向對象程序的關鍵特性.靜態多態(也稱參數化多態),是泛型編程的本質要素.

?

在面向對象的編程文獻中將一個帶有大量成員的類稱作blob.類的成員彼此"耦合",因為它們必須被聲明在一起.為了避免耦合并提高模塊化程度,應該避免使用這種反模式.替代

方式是采用獨立的元函數來定義單獨的traits

?

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

,因為元數據是可變的并且元函數不可以有任何副作用.

?

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

嵌套數值常量成員

  元函數

  數值型元函數

  無參元函數:一般是作為元函數特化,解決基礎數據類型的問題

?

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

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

?

?

?

變長模板:

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

#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);} };

?

轉載于:https://www.cnblogs.com/hustxujinkang/p/4982445.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。