公众号:张小飞那些事儿
10
26
15-特化与重载 15-特化与重载
重载模板以适用不同的情况 下面用于交换两个对象的函数模板exchange可以处理简单类型,但如果T是下面的类,就没必要再拷贝一次对象并调用两次赋值运算符,而只需要使用成员模板exchangeWith交换内部的指针 template<
26
26
13-实例化 13-实例化
On-Demand 实例化(隐式实例化) 编译器遇到模板特化时会用所给的实参替换对应的模板参数,从而产生特化 如果声明一个指向某类型的指针或引用,不需要看到类模板定义,但如果要访问特化的成员或想知道模板特化的大小,就要先看到模板定义 te
26
26
26
10-泛型库 10-泛型库
回调 回调的含义是:对一个库,用户希望库能够调用用户自定义的某些函数,这种调用称为回调。C++中用于回调的类型统称为函数对象类型,它们能直接用作函数实参 #include <iostream> #include <vector
26
26
08-编译期编程 08-编译期编程
C++有许多支持编译期编程的特性 C++98前,模板提供了编译期计算的能力,包括使用循环和执行路径选择 使用偏特化,可以在编译期根据特定的约束或要求,在不同的类模板实现之间进行选择 使用SFINAE,允许在不同的函数模板实现之间对不同的类
26
26
6-移动语义与enable_if 6-移动语义与enable_if
完美转发(Perfect Forwarding) 要用一个函数将实参的如下基本属性转发给另一个函数 可修改的对象转发后应该仍可以被修改 常量对象应该作为只读对象转发 可移动的对象应该作为可移动对象转发 如果不使用模板实现这些功能,必须编
2 / 82