侯捷C++及C++ Primer plus(五)

Conversation funtion转换函数

将该类的对象转换为其他类型

转换函数实现将分数转换为小数
重载double使Fraction转换为double
在这里插入图片描述

non-explicit-one-argument ctor

构造函数前不加任何关键字即是non- explicit,one-argument只要一个实参就够了
可以把别的类的对象转换为该类,与对比转换函数是完全相反的
在这里插入图片描述

explicit-one-argument ctor

加了explicit之后不会自动调用构造函数进行转换

智能指针 pointer-like classes(设计class去模拟pointer)

智能指针内一定会有一个普通指针
智能指针中一定要重载运算符*和->
在这里插入图片描述
调用智能指针的构造函数,将普通指针传入进去生成一个智能指针
sp->method()等价于px->method

sp->等价于px
箭头符号有一个特殊的行为,作用下去得到结果后箭头符号会继续作用下去
所以在sp->==px之后继续作用下去执行px->method

迭代器用途是遍历容器,所以要重载++,–等运算符
在这里插入图片描述

function-like class仿函数

在这里插入图片描述

identity传入什么类型则传出什么类型
select1st取出第一个所传入的Pair
select2nd取出第一个所传入的Pair

标准库中,仿函数会继承奇特的base classes父类

namespace经验谈

在这里插入图片描述
全局变量全局函数以及class等等都放在namespace中
放在不同的命名空间中可以防止函数之间的冲突

class template类模板

在设计class的时候,认为可以把哪种变量或函数抽出来允许使用者任意指定就将其前面加T,将其抽出
在这里插入图片描述

在使用时指定T的类型

function template函数模板

函数模板在使用时不必指明type,函数在调用时会进行实参推导,根据调用时的参数推导出type的类型
在这里插入图片描述
如果传入函数模板的类型为stone,而stone中没有重载函数模板中用到的运算符,则此时会报错

member template成员模板

可以让构造函数更有弹性
在这里插入图片描述
传入构造函数的初值如果是该类的子类所构成的,则可以成功赋值
在这里插入图片描述

up-cast 用子类创建一个指针并将其指向给父类

上转型对象:用子类创建一个对象并将其引用给父类创建的对象

模板特化

模板泛化
在这里插入图片描述
模板特化
在这里插入图片描述
模板偏特化-个数上的偏
在这里插入图片描述
为了单独为该数据类型设计一套,而非使用模板泛化
将第一个参数的数据类型绑定为bool值

模板偏特化-范围上的偏

将参数的数据类型所取范围缩小
在这里插入图片描述

模板模板参数

禁止套娃!

在这里插入图片描述
在这里插入图片描述

C++标准库

在这里插入图片描述

三个主题

variadic templates
数量不定的模板参数
在这里插入图片描述
把调用者分进来的模板参数分为一个和一小包

语法糖
auto

//之前
List<string>::iterator ite;
ite=find(c.begin(),c.end(),target);
//现在
auto=find(c.begin(),c.end(),target);

语法糖
for

for(decl:coll){
	statement
}

将冒号右边容器中的值赋到左边这个变量上
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值