C++类的定义和声明

C++ 语言可以看成是 C语言的扩展和改进,相对于 C语言,C++语言主要是增添了面向对象的特性。类(Class)则是 C++ 面向对象编程的实现方式。

无论是何种编程语言,进行面向对象程序设计都将是从类的设计开始的。什么是类呢?其实很简单,我们可以理解为一种用户自定义的数据类型,类似于 C语言里面的结构体(struct),在本章最后我们将对比类和结构体之间的异同。

首先我们来了解一下类的声明,先来看一个例子。

【例 1】一个最简单的类声明:
class student
{
    //可以在此处声明类成员变量和成员函数
};
在例 1 中创建了一个 student 类,可以在该类中声明 student 类的成员变量和成员函数,用于描述 student 的各方面特性,例如姓名、学号、年龄等信息。

在例 1 中,class 是 C++ 关键字,也是用于类声明的关键字。紧接 class 关键字之后的是我们自定义的类名 student。

例 1 中的类定义我们可以理解为我们定义了一种新的数据类型,该数据类型的标识符为 student(这个类似于 int 是 C++ 中整形的标识符)。

特别要注意的一点是,在类声明结束处右括号“}”后面右一个分号“;”,这个分号一定不能忘记,它是类声明的一部分。如果漏掉则会在程序编译不通过。

声明了 student 数据类型之后,我们就可以用其定义变量了,如:
student LiLei;  //创建对象
在这一条语句中就利用 student 数据类型声明了一个 LiLei 的变量,这和
int a;  //定义整形变量
语句定义了一个整型变量表达的意思是类似的。而 LiLei 这个变量我们称之为 student 类的对象。

在用类定义对象的时候,一定要先给出类声明,这就好比用某种自定义数据类型来定义变量的时候,我们必须要先给出该数据类型的声明一样。由于 C++ 里面本身集成一些常用数据类型,如 int、bool、double 等,所以在用这些数据类型声明变量时不需要再由我们自己给出类型声明了。

在定义类的对象时,class 关键字可要可不要,如例 2 所示,但通常出于习惯我们通常都会省略掉 class 关键字。

【例 2】class 关键字可要可不要:
class student LiLei; //正确
student LiLei;     //同样正确
定义类对象时,除了能定义单个变量以外,用类定义一个数组或者指针都是可行的。

【例3】定义对象数组或指针:
student all_student[1000];
student * pointer;
在例 3 中,我们定义了一个 all_student 数组,该数据拥有 1000 个元素,每一个元素都是 student 类型。此外,我们定义了一个 student 类型的指针 pointer,该指针可以指向 student 类型的变量,其用法跟普通指针是一样的。