### 类的定义

在 C++中，类的定义方式与结构体类似，只是使用 class 关键字定义。其格式为：

class 类名

{

数据和方法的定义

}；

类的定义包含两部分，类头和类体。类头由 class 关键字和类名构成。类体由一组大括号“{}”和一个分号“;”构成，类体中通常定义类的数据和方法，其中数据描述的是类的特征，也被称之为属性或数据成员，方法实际上是类中定义的函数，也称之为方法，描述的是类的行为。下面以描述“用户”为例，介绍类的定义。为了简化类的定义，我们认为“用户”具有名称和密码两个属性，并且具有实现登录功能。

定义一个 CUser 类

class CUser //定义一个类

{

char m_Username[128]; //定义数据成员

char m_Password[128]; //定义数据成员

bool Login() //定义方法

{

if (strcmp(m_Username,"MR")==0 && strcmp(m_Password,"KJ")==0)

{

cout << "登录成功!" << endl;

return true;

}

else

{

cout << "登录失败!" << endl;

return false;

}

}

};

在上述代码中定义了一个 CUser 类，该类包含了两个数据成员 m_Username 和 m_Password，还提供了一个 Login 方法用于实现用户登录操作。在 C++中定义类时，类名通常以大写字母 C 开头，成员变量已“m_”为前缀，这已是一个约定俗成的习惯。在定义类的方法时，方法的定义可以直接放置在类体内，例如上例定义的 CUser 类，也可以将方法的定义放置在类体之外，在定义类时只提供方法的原型。例如：

将方法的定义放置在类体之外

struct CUser //定义一个类

{

char m_Username[128] ; //定义数据成员

char m_Password[128]; //定义数据成员

bool Login(); //定义方法原型

};

bool CUser::Login() 实现 CUser 类中的 Login 方法

{

if (strcmp(m_Username,"MR")==0 && strcmp(m_Password,"KJ")==0)

{

cout << "登录成功!" << endl;

return true;

}

else

{

cout << "登录失败!" << endl;

return false;

}

}

当方法的定义放置在类体外时，方法的实现部分首先是方法的返回值，然后是方法名称和参数列表，最后是方法体。

注意：当方法的定义放置在类体外时，方法名称前需要使用类名和域限定符::来标记方法属于哪一个类。

在定义类的成员变量时不能够对成员变量进行初始化，这一点与定义普通的变量不同。例如，下面定义的 CUser 类是错误的。

不能够直接对类数据成员进行初始化

class CUser

{

char m_Username[128] = {0}; //不能够直接对类数据成员进行初始化

char m_Password[128] = {0}; //不能够直接对类数据成员进行初始化

bool Login()

{

if (strcmp(m_Username,"MR")==0 && strcmp(m_Password,"KJ")==0)

{

cout << "登录成功!" << endl;

return true;

}

else

{

cout << "登录失败!" << endl;

return false;

}

}

};