[ C++ ] 勿在浮沙筑高台 —— 拾遗
-
explicit 主要用于处理一个参数的构造函数,使其不用于隐式类型转换(防止二义性)
-
operator->() C++设计 ->可以一直保留下去
-
仿函数

仿函数会隐式继承他们中的一个(详见 标准库课程)
-
namespace经验谈
放一些全局的测试代码。。不用花时间去想新名字 -
template的实现:二次编译
-
模板偏特化 —— 个数的偏

从左至右绑定类型名,不可跳过。
-
模板偏特化 —— 范围的偏 (例:特化指针类型)

-
模板模板参数 —— 具体内容见C++11

这个不算模板模板参数,因为模板类型已写死,没有变动的可能。
-
可变参数模板 (variadic templates) C++11
包pack:类型/类型参数...args typename...类型参数- 模板参数包(template parameters pack)
- 函数参数类型包(function parameter types pack)
- 函数参数包(function parameters pack)
sizeof(args) 返回包内参数个数

注意要重载一个无参空函数,因为包的size可能为0,而原本的参数必须大于等于1
-
auto C++11
必须初始化。 -
注意 foreach 方式改变数组值时,必须取引用!
for( auto& elem : vec ){ elem *= 3; } -
引用


-
const是函数声明的一部分
-
Inheritance + Composition 关系下的构造和析构
构造:Base() -> Component() -> Derived()
析构:~Derived() -> ~Component() -> ~Base() -
静态绑定:直接call
动态绑定:查对象的vtbl,再call (指针+向上转型+调用虚函数)
注意B b;A a = (A) b;这是静态绑定! -
当成员函数的const 和 non-const版本同时存在,const对象只会调const版本
non-const对象只会调用non-const版本

浙公网安备 33010602011771号