Boolan - C++学习笔记 二 - 第一周

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数量不等的模板参数


推荐阅读更多精彩内容