位字段
位字段(Bit-field)就是数据成员,然而被指定了可存放的位数量,也就是用来存放位数据的值域,必须是整数或枚举,通常使用 unsigned,例如 unsigned int: #include.........
union
有些类的实例,可能包含不同类型的成员,然而,在某个时间点上,只会有一个成员是有效的,例如,你可能会设计一个磁头类,磁头读取磁带中的数据并存储为对应的数据类型: #include <iostr.........
枚举
有时候,你会想要定义一组相关的常数,例如,以一组常数来代表游戏中动作: #include <iostream> using namespace std; struct Action .........
weak_ptr
weak_ptr 用来搭配 shared_ptr,当 shared_ptr 实例用来构造 weak_ptr 实例或指定给 weak_ptr 时,动态配置资源的参考计数并不会增加。例如: #includ.........
shared_ptr
很多情况下,动态配置的对象会在不同的类实例间共享,很自然地就会引发一个问题,谁该负责删除这个被分享的、动态配置的对象? 答案可以很简单,最后一个持有动态配置对象的实例不再需要该对象时,该实例要负责删.........
unique_ptr
在〈auto_ptr〉中,主要是认识自动管理动态配置对象的原理,c++ 98 的 auto_ptr 被废弃的原因显而易见,往往一个不小心,就忽略了资源被接管的问题,另一个问题是,它无法管理动配置的连续.........
auto_ptr
使用 new 动态配置的对象,在不需要使用时必须以 delete 删除,然而动态内存配置很容易发生忘了delete,如果有个方式可以自动删除资源就好了! 若能创建一个非动态配置的对象,该对象管理着动.........
析构函数、复制与移动
在〈类模版〉中的 LinkedList 范例,每个元素都由内部类 Node 实例保存,而 Node 是以 new 动态配置,若不再使用 LinkedList 实例,应该清除这些 new 出来的 N.........
成员指针
在〈函数指针〉介绍过如何将函数指定给对应类型的函数指针,类的成员函数也是函数,必要时也可以指向对应类型的指针。 要定义成员函数的指针,与非成员函数的指针定义类似,主要是要以 :: 来指定是哪个类的.........
类模版
至今已经直接使用过类模版很多次了,那么如何自定义类模版呢?基本上,类模版就只是函数模版的概念延伸,如同函数模版实例化后的是各个不同版本的函数,类模版实例化后的是各个不同的类,更具体来说,是各种.........
函子
在调用函数时的 () 是调用运算符(call operator),你可以重载调用运算符。例如: #include <iostream> using namespace std; str.........
自定义类型转换
在〈运算符重载〉,若 Rational 加法的左运算数是 int 整数的话,运算符重载时使用了 friend 非成员函数,这明确地定义了遇到 int 为左运算数,而右运算数为 Rational,计算.........