最近在看代码发现有个模板类型的使用很复杂,然在网上搜索模板的使用,竟然那种用法还有较为通用的
表述,也就是标题上的名称。 找着找着才发现原来这用法也很发杂,真心佩服第一个能将template 这样子弄的人。
trait 应用模板STL
trait 应用模板类/结构体
这都是个人感觉体会,可能你也会有不同的看法。
template <typename T>
class AA
{
T Get();
T Set();
};
很多时候见得比较多的就是代码中对不同对象类型定义不同的结构体,然后一一去实现。此时就能体现出代码简洁性和易维护性。
下面的定义目的都是为了不同的信号类型定义,此时发现接口都相同,就是结构体定义不同。
上面描述的信号类型,都能够一一根据下面的模板类定义,1000个不同类型的信号,也就是1000个结构体;而不是1000个不同类型的信号代码实现。
template <typename a , bool b = true ,typename ItempType = typename a::ItemType> struct Owner;
template <typename a , typename ItempType >
struct Owner<a,true,ItempType>
{
Owner(){printf("owner1\n");}
};
template <typename a ,typename ItempType>
struct Owner<a,false,ItempType>
{
Owner(){printf("owner2\n");}
};
struct helloTraits
{
typedef int ItemType ;
ItemType aaa ;
};
原文:https://www.cnblogs.com/ljymoonlight/p/14787688.html