1.定义pos时最好用无符号整型 如uint8_t size_t
编译器可能会有(有符号/无符号不匹配)的警告 总的来说就是符号一致
2.遇到俩个lambda相互调用的情况 使用std:funtion前置声明
3.回顾了虚函数,定义virtual 就是虚函数 一般是父类指针指向子类对象的时候显示多态,若不是指针则是静态绑定 为函数重写 出现 virtual funtion = 0;就是纯虚函数 有一个纯虚函数的类是抽象类,它不能被实例化(因为虚函数未实现 ) 若是父类是抽象类 那么子类得把所有的纯虚函数都实现 否则这个子类也变成抽象类
4.回顾了智能指针 shared_ptr unique_ptr 发现项目中有
virtual~CSpDesignFactory()
{
for (auto i = m_pNormalSpFunction.use_count(); i > 0; --i)
{
m_pNormalSpFunction.reset();
}
} 这样的代码 这是错误的写法 m_pNormalSpFunction.resetreset()
只会影响调用它的shared_ptr
,而不会影响其他指向同一对象的shared_ptr
reset 只减少引用计数 当引用计数变为0的时候自动销毁shared_ptr 的父类有两个指针 一个是自己的类型指针 还有一个引用计数指针 一般都是用unique_ptr没有管理共享所有权的开销
5.回顾工厂模式
父类定义为纯虚函数 有多个子类继承它 使用不同的id调用不同的子类