C++
Yandong_Ji
这个作者很懒,什么都没留下…
展开
-
Day 8: 重载与模板
1. 重载模板语法形式如下所示template <typename T>string debug_rep(const T &t){ostringstream ret;ret<<t;return ret.str();}当存在多个模板实例化结果时,编译器选择最准确的和最特例化的版本(如非模板函数)2. 可变参数模板参数个数不止一个template<ty...原创 2018-05-17 23:16:18 · 125 阅读 · 0 评论 -
Day3: 函数模板显式实参
1. 若定义模板时,由用户控制函数返回类型,T1 compare(T2,T3);T1不存在于参数表中,系统无法从用户输入的参数中判断出返回值类型,则需要用户在使用时提前指定一个类型template <typename T1,typename T2, typename T3>T1 sum(T2,T3);//指定形式如下:auto value=sum<long long>(i...原创 2018-05-12 22:57:18 · 206 阅读 · 0 评论 -
模板实参推断
一、类型转换与模板类型参数可应用于函数模板的类型转换1. 非const的引用(或指针)传递给const的引用(或指针)int i;const int &j=i;const int *p=&i;int &r=j,*q=p;//错误,存在修改const的可能2. 数组、函数指针转换int a[10];int *r=a;//将a自动换成指向数组首元素的指针bool le...原创 2018-05-12 23:00:43 · 195 阅读 · 0 评论 -
C++控制实例化
显式实例化使模板实例化时,文件中形成的实例各不相同,避免了大系统中一个文件一个实例的额外开销形式如下:extern template declaration;(declaration 为类或函数声明)extern template class Blob<string>;extern template compare(const int&,const int&);则在...原创 2018-05-07 16:10:06 · 590 阅读 · 1 评论 -
Day 4: 尾置返回类型与类型转换
1.尾置返回类型template <typename T>auto fcn(T beg,T end)->decltype(*beg)//尾置返回的作用为--使输出值为函数参数之一,但实际编译过程中用处并不大,decltype语句完全可以省略,而程序不报错{return *beg;}2.进行类型转换的标准库模板类(强制类型转换)template<typename T&...原创 2018-05-14 10:45:36 · 215 阅读 · 0 评论 -
Day 5: 函数指针和实参推断
1.(1) 用函数模板初始化函数指针template<typename T>int compare(const T&,const T&);int (*pf)(int)(const int&,const int&)=compare;//pf指向实例(2)函数模板使函数重载void func((int*)(const int&,const in...原创 2018-05-14 15:30:45 · 161 阅读 · 0 评论 -
Day 6: std::move 理解
move获得一个绑定到左值上的右值引用1. 如何定义template<typename T>typename remove_reference<T>::type&& move(T&& t){return static_cast<typename remove_reference<T>::type&&&g原创 2018-05-15 06:25:46 · 171 阅读 · 0 评论 -
Day 7: 转发
为将一个或多个完整的实参传递给其他函数,需要继续转换。1. template<typename f,typename T1,typename T2>void flip1(F f,T1 t1,T2 t2){f(t2,t1);}void f(int v1,int &v2){cout<<v1<<" "<<++v2<<endl;..原创 2018-05-16 06:02:38 · 126 阅读 · 0 评论