4.6 类与结构、联合的关系本章讨论类的另外两种形式的设计。并将class与struct,union关系作比较说明。
4.6.1 结构与类类的语法与结构的语法相似。在C++中,结构具有面向对象的特征,结构的扩展形式是:
struct type_name{
//public function and members
private:
//private function and members
}object_list;
与class一样,用struct也可以创建一个新类。所不同的是在缺省情况下,class的成员都是私有的,而struct的成员是公有的。
4.6.2 联合与类在C++中联合也可以用于类的定义,其方法与结构一样。可以有构造函数和析构函数。
同一联合体内的所有数据成员共享一个内存空间。这是一般类无法实现的功能。
[例4.11] 按字节显示一个数的二进制值EX4_11.CPP(?)。
在C++中使用联合的限制如下:
(1)、联合不能从其他类继承属性。
(2)、联合不能作为基类派生子类。
(3)、联合不能包含任何静态成员。
(4)、联合成员对象不能拥有自己的构造函数和构构函数。
表4.2 类、结构和联合之间的差别
类
结构
联合
说明使用的关建字
Class
Struct
Union
默认的成员访问权限
私有
公有
公有
使用权限
无
无
同时只能使用一个成员
4.7 类设计应用实例解析
下面的程序是一个双精度型向量灯的例子。它包含了一些简单的操作,如加法、数乘向量、统计向量个数等。在程序中重载了一些运算符,这方面的内容可参阅后续章节。
[例4.12] 双精度型向量类实例EX4_12.CPP。
4.6.1 结构与类类的语法与结构的语法相似。在C++中,结构具有面向对象的特征,结构的扩展形式是:
struct type_name{
//public function and members
private:
//private function and members
}object_list;
与class一样,用struct也可以创建一个新类。所不同的是在缺省情况下,class的成员都是私有的,而struct的成员是公有的。
4.6.2 联合与类在C++中联合也可以用于类的定义,其方法与结构一样。可以有构造函数和析构函数。
同一联合体内的所有数据成员共享一个内存空间。这是一般类无法实现的功能。
[例4.11] 按字节显示一个数的二进制值EX4_11.CPP(?)。
在C++中使用联合的限制如下:
(1)、联合不能从其他类继承属性。
(2)、联合不能作为基类派生子类。
(3)、联合不能包含任何静态成员。
(4)、联合成员对象不能拥有自己的构造函数和构构函数。
表4.2 类、结构和联合之间的差别
类
结构
联合
说明使用的关建字
Class
Struct
Union
默认的成员访问权限
私有
公有
公有
使用权限
无
无
同时只能使用一个成员
4.7 类设计应用实例解析
下面的程序是一个双精度型向量灯的例子。它包含了一些简单的操作,如加法、数乘向量、统计向量个数等。在程序中重载了一些运算符,这方面的内容可参阅后续章节。
[例4.12] 双精度型向量类实例EX4_12.CPP。