作为一个复合结构的简单例子,可以考虑数学中点的概念。在一个层面上,点是我们以之作为一个对象的两个数字,即坐标。在数学符号中,点用括号中以逗号分隔的坐标表示。例如,(0,0)表示原点,(x,y)表示该点从原点起向右x个单位,向上y个单位。
在C++中,点可以很自然地以两个double表示。那么,问题是如何把这两个值组合成一个复合对象或结构呢?答案是结构体定义:
struct Point {
double x, y;
};
结构体定义出现在任何函数定义的外面,通常是在程序的开头(include语句之后)。
该定义表明,这个结构中体中有两个元素,分别命名为x和y。这些元素称为实例变量,原因我稍后将作出解释。
忘掉结构体定义末尾的分号是一种常见错误。在大括号之后放置一个分号可能很奇怪,但你会习惯的。
定义了新的结构体之后,就可以使用该类型创建变量了:
Point blank;
blank.x = 3.0;
blank.y = 4.0;
第一行是常见的变量声明:blank是Point类型。接下来的两行初始化结构体的实例变量。 这里使用的点记号与对象上调用函数的语法类似,如fruit.length()中的用法。当然,不同的是,函数名后面总是跟着一个参数列表,即使列表为空。
赋值的结果可以用下面的状态图表示:
照例,变量名blank在框外,而变量的值在框内。这里,这个值是一个复合对象,它由两个有名字的实例变量构成。