一、联合(union)概述 联合(union)是一种特殊的类 一个union可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当我们给union的某个成员赋值之后,该union的其它成员就变成未定义的状态了。分配给一个union对象的存储空间至少要能容纳它的最大的数据成员 类的某些特性对u ...
分类:
编程语言 时间:
2020-06-03 00:57:38
阅读次数:
98
特殊工具与技术
--优化内存分配
引言:
C++的内存分配是一种类型化操作:new为特定类型分配内存,并在新分配的内存中构造该类型的一个对象。new表达式自动运行合适的构造函数来初始化每个动态分配的类类型对象。
new基于每个对象分配内存的事实可能会对某些类强加不可接受的运行时开销,这样的类可能需要使用用户级的类类型对象分配能够更快一些。这样的类使用的通用策...
分类:
编程语言 时间:
2016-05-13 15:04:20
阅读次数:
329
特殊工具与技术--嵌套类 能够在还有一个类内部(与后面所讲述的局部类不同,嵌套类是在类内部)定义一个类,这种类是嵌套类,也称为嵌套类型。嵌套类最经常使用于定义运行类. 嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的。嵌套类型的对象不具备外围类所定义的成员,相同,...
分类:
编程语言 时间:
2015-05-17 09:18:53
阅读次数:
138
类型识别分为两种:一种以编译时类型识别,一种是运行时类型识别;编译时类型识别:static_cast;运行时类型识别(RTTI),C++通过下面连个操作符提供RTTi;1)dynamic_cast操作符,将基类类型的指针或者引用安全地转换为派生类型的指针或者引用;2)typeid操作符,返回指针或者...
分类:
编程语言 时间:
2014-10-09 13:22:43
阅读次数:
253
特殊工具与技术--联合:节省空间的类 联合是一种特殊的类。一个 union 对象可以有多个数据成员,但在任何时刻,只有一个成员可以有值。当将一个值赋给 union 对象的一个成员的时候,其他所有都变为未定义的。 为 union 对象分配的存储的量至少与包含其最大数据成员的一样多。联合提供了便利的办法表示一组相互排斥的值,这些值可以是不同类型的。 1.定义联合 作为例子,我们可能有一个处理不同各类...
分类:
编程语言 时间:
2014-08-16 09:47:00
阅读次数:
239
特殊工具与技术--局部类 可以在函数体内部定义类,这样的类称为局部类。一个局部类定义了一个类型,该类型只在定义它的局部作用域中可见。与嵌套类不同,局部类的成员是严格受限的。 局部类的所有成员(包括函数)必须完全定义在类定义体内部,因此,局部类远不如嵌套类有用。 实际上,成员完全定义在类中的要求限制了局部类成员函数的复杂性。局部类中的函数很少超过数行代码,超过的话,阅读者会难以理解代码。 ...
分类:
编程语言 时间:
2014-08-16 09:46:50
阅读次数:
205
特殊工具与技术--固有的不可移植的特征[上] C++从 C 语言继承来的不可移植特征:位域和 volatile 限定符。这些特征可使与硬件接口的直接通信更容易。 C++ 还增加了另一个不可移植特征(从 C 语言继承来的):链接指示,它使得可以链接到用其他语言编写的程序。 一.位域 可以声明一种特殊的类数据成员,称为位域,来保存特定的位数。当程序需要将二进制数据传递给另一程序或硬件设备的时候,通...
分类:
编程语言 时间:
2014-08-16 09:46:10
阅读次数:
296
特殊工具与技术[大结局]--固有的不可移植的特征[下] 三.链接指示:extern “C” C++ 程序有时需要调用用其他程序设计语言编写的函数,最常见的一语言是C 语言。像任何名字一样,必须声明用其他语言编写的函数的名字,该声明必须指定返回类型和形参表。编译器按处理普通 C++ 函数一样的方式检查对外部语言函数的调用,但是,编译器一般必须产生不同的代码来调用用其他语言编写的函数。C++ 使用链接...
分类:
编程语言 时间:
2014-08-16 09:45:40
阅读次数:
245
特殊工具与技术--嵌套类 可以在另一个类内部(与后面所讲述的局部类不同,嵌套类是在类内部)定义一个类,这样的类是嵌套类,也称为嵌套类型。嵌套类最常用于定义执行类. 嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的。嵌套类型的对象不具备外围类所定义的成员,同样,外围类的成员也不具备嵌套类所定义的成员。 嵌套类的名字在其外围类的作用域中可见,但在其他类作用域或定义...
分类:
编程语言 时间:
2014-08-15 22:35:09
阅读次数:
282
特殊工具与技术--优化内存分配[续2] 七.一个内存分配器基类 预先分配一块原始内存来保存未构造的对象,创建新元素的时候,可以在一个预先分配的对象中构造;释放元素的时候,将它们放回预先分配对象的块中,而不是将内存实际返还给系统。这种策略常被称为维持一个自由列表。可以将自由列表实现为已分配但未构造的对象的链表。 我们将定义一个名为 CachedObj 的新类来处理自由列表。像 QueueItem ...
分类:
编程语言 时间:
2014-08-15 19:39:29
阅读次数:
361