C++学习笔记第十一篇

 

101.类模板可以被局部特化,可以指定类模板的特定实现,并要求某些类型参数仍然必须由模板的用户指定。

102.为什么需要特化,而不重新定义新类:
(1)特化和重新定义新类看上去没有本质区别,但是如果定义新类,那么将变成一个类模板和一个新类,使用的时候需要考虑究竟是用类模板还是用新类。

(2)特化可以以统一的方式使用类模板和特化类,编译器自动优先选择特化类。

103.非类型模板参数的限制:

(1)变量不能作为模板参数。

(2)浮点数和类对象不能作为模板参数。

(3)全局指针不能作为模板参数。

编译器的推导过程是在编译阶段完成的。因此,编译器的推导必须依赖于特化类,否则推导过程无法结束。

104.在实际工程中内存操作是bug的重要来源,C++将堆内存交由程序员自由使用,因此:

(1)未及时释放,将产生内存泄漏。

(2)重复释放同一段内存,后果未知。

(3)使用越界,操作了不属于自己的内存。

105.内存越界的问题常发生于数组的使用中:

(1)解决方案:数组类。

(2)工程中,在非特殊情况下,要求开发者使用预先编写的数组类对象代替C语言中的原生数组。

106.内存泄漏和内存多次释放常发生于指针的使用过程中:

(1)解决方案:智能指针。

(2)工程中,要求开发者使用预先编写的只能能指针类对象代替C语言中的原生指针。

107.工程中的智能指针是一个类模板:

(1)通过构造函数接管申请的堆内存。

(2)通过析构函数确保堆内存被及时释放。

(3)通过重载指针运算符*和->模拟指针的行为。

(4)通过重载比较运算符==和!=模拟指针的比较。

108.什么是STL?

(1)STL,即:Standard Template Library,是C++的一部分。

(2)STL是常用数据结构和算法的集合。

(3)STL的目标是标准化组建,提高开发效率和程序可靠性。

109.STL库作为C++的一部分与编译器一同被发布。

110.STL主要由以下3部分组成:

(1)容器:管理数据的集合。

(2)算法:处理集合内的元素。

(3)迭代器:遍历集合内的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值