Basic-Template
Basic-Template
- 类模板的{友元类模板, 友元函数模板}
- 模板参数不共享, 全部实例
- 共享, 用已有参数进行1
totally实例化
, 友元参数多,部分序列实例
友元, 友元参数少,不限制其他参数各种实例
也将是友元
- 模板嵌套定义
- 共享参数, 是无参数的模板
- 非共享, 两套模板前缀
- 函数与函数模板, trival, 同理
Fold-Expression
Fold-Expression
作用
- 避免模板参数变长的basic case, 单独做函数实现(函数模板重载, 更具体, 更特化)
- 适用于模板参数变长, 当且仅当只有一个变长参数
- 记住, 折叠展开后, 再求值, 展开过程不求值
- 不要YY编译器过程, 依旧不改变上下文语义(
sizeof...(Args/args), 我的函数被调用多次等
)
Linux
Linux
offsetof
宏
#define offsetof(type, member) \
((size_t)&((type *)(void *)0)->member)
JavaReview
泛型
-
类方法泛型: 泛型参数必须为自己引入, 不能使用类引入的泛型参数
-
泛型类, 泛型方法的声明语法对比, 前者
Name<T extends/super>
, 后者<T extends/super>
位于返回值之前, 参数/局部变量中的使用只能T
-
显然, bounded只能用于泛型类, 泛型方法, 泛型句柄声明(此时只能WC), 不可作为真正参数(实参)
- 这种问题引发的叫做: 泛型的使用, 泛型句柄的操作受限
- 记住此时是使用, 不是定义, 声明泛型, 此时要么完全定死类型, 要么WC
- 而定义, 声明时, 是要么
T抽象
, 要么WC抽象
-
JavaLambda
Lambda
- 匿名内部类语法糖 (sugar)+ 强大类型推导
- 妥协于裸奔函数, 不会生成内部类
class
java.util.function.* => FP
Function类方法
UnaryOperator<T>, BinaryOperator<T>.apply()
UnaryPredict<T>, BinaryPredict<T>
Supplier<T>返回值限制接口
Consumer<T>参数限制接口
template拾遗
关于模板与友元
- 类模板的友元类
- 一般上, 此类是所有实例的友元类
- 常用形式是,
模板参数
作为这个实例
的友元类
- 类模板的友元函数
- 一般上, 此函数是所有实例的友元函数
- 类模板的友元类模板
- 重新使用一系列模板参数 => trival
- 关于能否使用外部类模板的参数做特例化/偏特化声明
template <>/减少个数
=> 作用域不同不允许特化声明 - 使用和外部一样的模板参数, 或部分参数 => appro one to one 友元
Java-CPP-Concurrence
Java-CPP-Concurrency
这里只讨论线程机制 即线程原语, 线程通信, 线程同步互斥
Java
单一/任一线程有限状态机
- 继承
Thread
,Override public void run()
创建对象, 将达到同如下的效果