C++程序设计(2)
第一周笔记
目录
泛型编程
面向对象
面向对象继承的内存模型
标准库:更多地使用模板编程,较少的用类的继承特性。
1 -转换函数
语法:Operator double ()const{return 1.0;}
从本身转为别的类型
下图所示:黄色部分为转换函数:成员函数将Fraction转换为double类型

Non – explicit one argument ctor:这种构造函数可以将别的东西A转换为类对象CX。
即通过将A实体构造成CX类的对象。
两种class:
1 point-like-class
1、智能指针:需要实现*->运算符重载。
C++:->具有特殊作用,Z->b()中的->符号作用在Z上之后,继续用->作用下去。
2、迭代器,用来遍历容器,除了实现*->外,还需要实现++ -- ==!=等操作符重载。
2 fuction-like-class
在类内部具有对()运算符的重载

3 Namespace:
作用:把一些东西包装起来,用以区分不同人开发出的代码,使得彼此不影响。
4类模板
模板不同于重载,是一种半成品,在编译的时候替换T为具体的类型。
语法:

使用:

5函数模板
使用比类模板更简单。

注意:<要能编译通过的前提条件是T类型的变量可以用<操作符来操作。因此如果T类型为自己设计的类,需要重载运算符<.
6成员模板
多见于标准库模板类的构造函数。智能指针模拟up-cast;

7 specializtion特化
特化是由一般到特殊的生物进化方式。在模板中指的是更具体的设计,将T用具体的类型再重新设计一次。是指由T到T的子集的过程。
Eg:将T用int替换得到新的具体的函数或类A或模板。
注意:这里A可能是具体的函数或类,也有可能是范围更小的模板类或函数。
8偏特化(个数上的偏特化,和范围上的偏特化(下图))

9模板模板参数(template
template param)

10数量不等的模板参数

网友评论