經典指數          
原因
1096
瀏覽數
0
收藏數
 

下面有關c++ traits,說法正確的有?
  • 一個traits包括了enum、typedef、模板偏特化(template partial specialization)
  • typedef定義了各個類的各自不同的類型定義
  • 模板偏特化用于實現各個類的不同功能
  • 當函數,類或者一些封裝的通用算法中的某些部分會因為數據類型不同而導致處理或邏輯不同,traits會是一種很好的解決方案

     舉報   糾錯  
該題目由題來君提供于 2015-10-08 16:50
 
切換
1 個答案

traits是C++的自動類型判斷。

出發點:因為C++沒有反射的機制。所以利用traits來完成。

大量使用場景:STL(STL中大量使用traits來區分類別。注釋POD標量類型和類類型的構造函數等)

機制:

template??

//泛化

struct?is_void

{?static?const?bool?value?=?false;?};

template?<>?

//特化

struct?is_void

{?static?const?bool?value?=?true;?};

int main(){

std::cout<::value;

????std::cout<::value;

}

根據模板的自動類型推導。在調用void的時候會使用特化版本。而其他類型呢?對,使用泛化版本。

這樣就巧妙的區分了不同的類型。這就是traits的基本原理。

C++11中提供了大量的traits,可參考http://www.cplusplus.com/reference/type_traits/

舉報   題來君 · 2015-12-29 23:29
 
切換
撰寫答案
守望英雄送彩金 云南11选5直选遗漏 宁夏十一选五开奖直播 云彩娱乐苹果 2020后的赚钱专业 整形做网红卖衣服赚钱吗 1000炮金蟾捕鱼下载 江西新时时彩历史数据 qq分分彩官网走势图 极品飞车9 简单赚钱 海南特区彩票论坛 有哪些页游升级能赚钱 今日头条到底怎么赚钱 31选7开奖走势 极速飞艇开奖直播官网 丰禾棋牌网站 冠通棋牌手机版3安卓版