C++语言程序设计

下面是一个简单类的定义实例，该类定义了一个二维坐标点。

| 例10-1

1.class Point
{
2. public:
3. int GetX();
4. int GetY();
5. void SetPt (int, int);
6. void OffsetPt (int, int);
7. private:
8. int xVal, yVal;
9．}

| 表10-1 注释

1. | 用class关键字定义名为Point的类，类体包含在花括号中
2. | public关键字以下的类成员为公有成员
3-4. | 两个公有成员函数的原型，无形参，返回类型int
5-6. | 两个公有成员函数的原型，带两个整型参数，返回类型为void
5. | private关键字以下的类成员为私有成员
6. | 定义两个私有的数据成员xVal和yVal

如果未指定类成员的访问权限，默认访问权限是私有的，且数据成员和成员函数出现的顺序也没有关联。例10-1也可写成下面的形式：
class Point {
int xVal, yVal;
public:
int GetX();
int GetY();
void SetPt (int, int);
void OffsetPt (int, int);
};
"声明"向计算机介绍名字，这个名字是什么意思。而"定义"为这个名字分配存储空间。无论涉及到变量时还是函数时含义都一样。无论在哪种情况下，编译器都在"定义"处分配存储空间。对于变量，编译器确定这个变量占多少存储单元，并在内存中产生存放它们的空间。对于函数，编译器产生代码，并为之分配存储空间。
定义也可以是声明。如果该编译器还没有看到过名字A，程序员定义int A，则编译器马上为这个名字分配存储地址。
声明常常使用extern关键字。如果我们只是声明变量而不是定义它，则要求使用extern。对于函数声明，extern是可选的，不带函数体的函数名连同参数表或返回值，自动地作为一个声明。
函数原型包括关于参数类型和返回值的全部信息。"int f(float,char);"是一个函数原型，因为它不仅介绍f这个函数的名字，而且告诉编译器这个函数有什么样的参数和返回值，使得编译器能对参数和返回值做适当的处理。下面是一些声明的例子：
extern int i; //声明但未定义
extern float f(float); //函数声明
float b; //声明和定义
float f(float a) //定义
{
return a + 1.0;
}
int i; //定义
int h(int x) //声明和定义
{
return x + 1;
}
void main(void)
{
b = 1.0;
i = 2;
f(b);
h(i);
}
在函数声明时，参数名可给出也可不给出。而在定义时，它们是必需的。