第5章 类和对象
类是面向对象程序设计的核心,是实现信息封装的基础。它实际上是一种新的数据类型,是对某一类对象的抽象,而对象是某一种类的实例。对象和类是密切相关的,没有脱离对象的类,也没有不依赖于类的对象。
5.1 类的定义
5.1.1 什么是类
类是一种复杂数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。
类是一种用户定义的类型。有了这种类型使得应用中的实体在程序中可以直接作为一个标识符,对它进行引用和操作。
类的结构是用来确定一类对象行为的。这些行为是通过类的内部数据结构和相关的操作来确定的。
5.1.2 类的定义格式
类的定义包括 说明部分 实现部分
说明部分:说明类中定义的成员。 (数据成员,成员函数) 实现部分:定义成员函数。
类的定义格式: class 类名 {
public:
成员函数或数据成员的说明 protected:
数据成员或成员函数的说明 private:
数据成员或成员函数的说明 };
各个成员函数的实现
或者:
class 类名 {
数据成员或成员函数的说明 public:
成员函数或数据成员的说明 protected:
数据成员或成员函数的说明 };
各个成员函数的实现
public 访问权限 protected Private
公有部分往往是一些操作(成员函数),它是用户的接口。这部分成员用户在程序中可以使用。
私有部分通常是一些数据成员,是用来描述该类中的对象的属性的,用户无法访问它们,只有成员函数或友元函数才能访问它们。它们是被用来隐藏的部分。
例如,定义一个日期类。
说明部分: class TDate { public: void SetDate(int y,int m,int d); int IsLeapYear( ); void Print( ); private:
int year,month,day; };
实现部分:
void TDate::SetDate(int y,int m,int d) { year=y; month=m; day=d; }
int TDate::IsLeapYear( )
{ return (year%4==0&&year0!=0)|| (year@0==0); }
void TDate::Print( )
{ cout< } ::作用域运算符 类名::函数名(参数表) 定义一个日期类还可以: class TDate { public: void SetDate(int y,int m int d) { year=y; month=m; day=d;} int IsLeapYear( ) {return (year%4==0&&year0!=0)|| (year@0==0);} void Print( ) { cout< < private: int year,month,day; };