Boolan C++面向对象高级编程(下)第一周

第一周

一、导读

 

二、conversion function 转换函数

转换函数语法

operator double() const{} 通常是const(不是const也可以编译通过)

1.函数名称

2.没有返回类型,返回类型就是函数名称中的类型

三、non-explicit one argument ctor

只有一个实参就可以

non-explicit

Fraction(int num,int den=1):m_numerator(num),m_denominotor(den){}

 

explicit-one-argument ctor

explicit只用在构造函数的前面(还有模板的一小部分)

 

四、pointer-like classes

1.最经典的就是智能指针

两个操作符重载 *和 ->

c++语法:->箭头符号作用的结果可以继续作用下去

Boolan C++面向对象高级编程(下)第一周_第1张图片

sp->返回结果是px,->已经消耗掉,但是px还可以继续->

2.迭代器

Boolan C++面向对象高级编程(下)第一周_第2张图片

五、function-like classes

仿函数

能够接受()操作符

Gun C

select1st()()

 

标准库中,仿函数所用的奇特的base classes

大小是0,没有函数

unary_function

binary_function

六、namespace经验谈

 

七、class template

 

八、function template

类模板使用时需要指明type,函数模板使用时不用指明type

编译器会对function template进行实参推导

九、member template

 

Boolan C++面向对象高级编程(下)第一周_第3张图片

 

标准库中很多类的构造函数使用成员模板

十、specialization 模板特化

Boolan C++面向对象高级编程(下)第一周_第4张图片

十一、    partial specialization  模板偏特化

1.个数的偏

Boolan C++面向对象高级编程(下)第一周_第5张图片

左边到右边,不能跳

2.范围的偏

Boolan C++面向对象高级编程(下)第一周_第6张图片

十二、    template template parameter  模板模板参数

template 中typename和class共通,历史原因,原来没有typename只有class。

十三、    关于C++标准库

    标准库中的容器和算法都自己试一遍

十四、    三个主题

C++11

第一步,确认支持c++11:macro_cplusplus

1.variadic templates

数量不定的模板参数

Boolan C++面向对象高级编程(下)第一周_第7张图片

2.auto

   C++的语法糖

3.ranged-base for

{}形成一个容器(c++11)

遍历容器方便很多

以前使用iterator或者foreach遍历容器

编译器怎么实现引用:都是用指针做的

十五、    Reference

从逻辑上r代表x,从实现上r是一个指针

1.一定有初值;

2.不能再变;

3.Object和其reference的大小相同,地址也相同(全都是假象)

Reference的常见用途

Reference通常不用于声明变量,而用于参数类型和返回类型的描述。

 

函数签名

const是不是函数签名的一部分?YES!

 

十六、    复合&继承关系下的构造和析构

    参看第一部分的内容。

你可能感兴趣的:(Boolan C++面向对象高级编程(下)第一周)