
上QQ阅读APP看书,第一时间看更新
4.4 类类型(class)

类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。这与结构体类似,唯一不同的就是结构体没有定义所说的“数据相关的操作”,也就是用户平常经常看到的方法。
类的定义格式一般分为说明部分和实现部分。说明部分是用来说明该类中的成员,包含数据成员的说明和成员函数的说明。成员函数是用来对数据成员进行操作,又称为“方法”,实现部分是用来对成员函数的定义。概括说来,说明部分将告诉使用者“干什么”,而实现部分是告诉使用者“怎么干”。
类的一般定义格式如下:

class是定义类的关键字。一对大括号内是类的说明部分,说明该类的成员。类的成员包含变量和函数两部分。从访问权限上来分,类的成员又分为公有的(public)、私有的(private)和保护的(protected)三类。
而在C++中,类定义的成员变量或成员函数默认都是private属性的,表示私有成员,不能随意访问。而在结构体中定义的成员变量或成员函数默认都是public属性,表示公有成员,能够随意访问。
【例4-4】编写程序,输出居民Li Hui的个人信息。
(1)在Visual Studio 2017中,新建名称为“4-4.cpp”的Project4文件。
(2)在代码编辑区域输入以下代码。

【程序分析】在本例中,定义了一个名为People的类,该类的成员变量包括age、name、sex、height和addr,此外还声明了一个函数show(),该函数在类内部声明,在类外部定义。在主函数中,首先通过类People创建了一个对象peo,通过成员选择符,peo对象在接下来的几行代码中分别调用了类中定义的变量及函数。
在Visual Studio 2017中的运行结果如图4-13所示。

图4-13 类访问成员变量