Knowledge Point:
converion function // 转换函数
operator double() const {
return (double) (m_numerator / m_denominator);
}
有了转换函数,编译器就会将合适的可以转换的数据转成相应的类型,我感觉有点类似于运算符重载。
non-explicit-one-argument ctor
构造函数前+explicit也算是提醒编译器不用帮忙进行隐式转换了。
pointer-like classes
eg: shared_ptr
类实现智能指针,内部封装这一个真正的指针
引用计数,方便内存管理提高安全性
namespace
项目团队合作中为了避免不同成员实现的不同方法,也避免相同命名的情况。
class template 类模板
template<typename T>
class fun{
private:
T temp;
public:
fun( T t = 0): temp(t) { }
}
{
fun<int> t1(5);
}
数据类型泛化,没有明确规定,具体运行时才决定具体类型,使用更加方便
function template 函数模板
函数泛化,函数使用更加方便,数据类型返回类型模糊。
specialization 模板特化
将模板具现化,有点个性化设计的感觉,方便程序员编程
partial specialization 模板偏特化
则将模板定义中部分参数特化,更加灵活。
template template parameter 模板模板参数
感觉更像是模板函数的嵌套
variadic templates数量不定的模板参数
1+包的递归
总结:这周内容蛮多,也不太容易理解,只好简单总结一下,之后再慢慢研究
这周作业中也去详细了解了内存对齐机制,对对象分配的大小偏底层的计算机存储方式也有一定的了解,不断学习也在不断收获。
分享一篇内存对齐比较好理解的文章
http://blog.csdn.net/hairetz/article/details/4084088