侯捷部分
new 用来开辟对象的时候,编译器会将这个步骤分成三步,第一是分配内存,第二部是转换类型,第三步是构造函数,动态分配存入初始值。先分配空间,在分配初始值。delete和new相反的,但只有两部步,第一步析构函数,将 值删除,第二部,删除指针本体。
这边有一篇不错的文章,讲的是new和malloc的面试考点
array new 一定要搭配 array delete,如果array new 并没有搭配arraydelete会照成内存泄漏,原因是编译器默认析构函数只进行了一次,但动态分配的空间可能有多个,本体倒不会出错。
static修饰函数,函数没有this指针
偏特化分为范围上的偏还有个数上面的偏。个数上的偏可以是这样的,原本是有两个模板参数,现在其中的一个模板参数已经被固定,只剩下一个可以使用。而范围上的偏移则可以理解成和个数偏移差不多的,固定这个模板只接收了这个类型
接下来讲到一个转换函数,转换函数不能有返回值,需要转换成什么类型,在第二个箭头处就写什么类型,后面最后面还要加个const,函数体内部再加上转换的方法