这一篇是另一篇各种琐碎东西的笔记。
类型转换可以通过类型转换函数,或者构造函数来实现。但是一般来说类型转换指的是类型转换函数。
类型转换函数不需要声明输出类型(因为输出类型是固定的),也没有参数,同时因为不会改变类的内容,所以是const的。
explicit加到构造函数上,将使得构造函数只能用于创建类的实例,而不能用于自动的类型转换。
->符号会一直传递下去而不会消失,所以在重载->的时候,直接返回需要返回的目标的指针就可以了。会再出现->继续运算。
仿函数。(不太理解,待补充)
对于模版,类模版要指明模版的类型,但是函数模版可以自行推断类型。
成员模版就是在类里面建立可以自定义类型的方法。传入的参数要保证该方法可以正常运行。(一般都是构造函数,使得构造函数更有弹性)
模版特化就是在函数定义的时候制定模版的类型,这样当实际使用时的模版类型与特化的类型一致时,调用特化的函数版本。
模版偏特化就是部分的模版特化,包括数量上的部分特化,和类型上的部分特化。
模版模版参数(待补充)。
数量不定的模版参数(感觉跟变参差不多,待补充)。
auto自动类型。
for range是pass by value的,如果需要pass by reference则需要在类型声明上加上引用,比如for(auto& i:list) {}。
引用的大小和地址都与目标相同,但其实只是假象,其本质仍然是指针。