类源于现变生活中、是所遇见的实实在在的对象,对每个对象的认识就需要抽象的概念,
分类的结果使对象更加具体和细化。
例如,问什么是桑塔纳?答案是一种小汽车,再问什么是小汽车?一般答案是一种交通工具。在面向对象的计算机世界里,一辆实实在在的桑塔纳小汽车称为类桑塔纳的实例或对象。类桑塔纳是类小汽车的一个子类,而类小汽车是类交通工具的一个子类。
类是对客观事物的一种高度抽象,是具有一组相同属性和操作的集合,因此它包括两个部分的内容:数据成员和成员函数。其定义格式为如下。
class<类名>
{
public: //数据成员成者成员函数
private: //数据成员或者成员函数
protected: //数据成员或者成员函数
};
类的定义和结构的定义有些相似,但是类和结构有本质的区别:类定义中默认的情况下成员是private 的,而结构定义中的默认成员是 public 的。在C语言中,结构中不允许有成员函数,在C++语言中可以有成员函数。类的定义方法如程序206.cpp 所示。
//案例名称:使用 C++语言的类
//程序名称:206.cpp
#inelude<iostream>
using namespace std;
class person
{
public:
char * name;
int height;
int weight;
};
int main ()
{
person Zhang_three;
Zhang_three.name=“张三“;
Zhang_three.height= 175;
Zhang_three.weight=60;
cout<<"名字:“<<Zhang three.name<<"\n身高:“<<Zhang_three.height<<”\n 体重”<< Zhang_three.weight<<endl;
}
程序解释:程序中首先声明了一个类 person,然后定义了三个数据成员分别来描述姓名、身高和体重,再在 main0函数中利用“person Zhang_three;”语句定义了一个实例。再利用语句“Zhang_three.name="张三"”对数据成员进行赋值,最后将实例的信息输出来。
2.4.1 数据成员
数据成员又叫成员变量或者属性。数据成员的声明方式和变量的声明方式基本相同,格
式为:<数据类型><数据成员名>;
在声明一个数据成员时,需要注意以下两点:
- 不能采用 auto、extern 和 register 修饰符进行修饰;
- 只有采用 static 修饰符声明的静态数据成员才可以被显示初始化,它具有特殊的属性若试图在类体中直接初始化非静态数据成员,会导致编译错误。
2.4.2 成员函数
成员函数又叫方法,方法就是函数,当函数被类封装的时候称之为方法。成员函数在类体中的声明方式和普通函数的声明方式相同,成员函数可以在类体内被定义,也可以在类体外被定义。使用方法如程序207.cpp 所示。
//案例名称:在类中定义成员函数
//程序名称: 207.cpp
#include<iostream>
using namespace std;
class person
{
public:
char * name;
int height;
int weight;
void After_OneYear()
{
height+=10;
weight-=10;
}
};
int main()
{
person Zhang_three;
Zhang_three.name="张三";
Zhang_three.height=175;
Zhang_three.weight=60;
cout<<"\n 张三本来的身高和体重 :"<<endl;
cout<<"名字 : "<<Zhang_three.name<<"\n 身高:"<<Zhang_three.height<<"\n 体重:"<<Zhang_three.weight<<endl;
Zhang_three.After_OneYear();
cout<<"\n 张三一年后的身高和体重:"<<endl;
cout<<"名字 : "<<Zhang_three.name<<"\n 身高:"<<Zhang_three.height<<"\n 体重:"<<Zhang_three.weight<<endl;
}
如果在类体外定义成员函数,必须先用域运算符“::”指出该成员函数所属的类。使用的方法如程序 208.cpp 所示。
//案例名称:在类外定义成员函数
//程序名称: 208.cpp
#include<iostream>
using namespace std;
class person
{
public:
char * name;
int height;
int weight;
void After_OneYear();
{
height+=10;
weight-=10;
}
};
Void person::After_OneYear()
{
height+=10;
weight-=10;
}
int main()
{
person Zhang_three;
Zhang_three.name="张三";
Zhang_three.height=175;
Zhang_three.weight=60;
cout<<"\n 张三本来的身高和体重 :"<<endl;
cout<<"名字 : "<<Zhang_three.name<<"\n 身高:"<<Zhang_three.height<<"\n 体重:"<<Zhang_three.weight<<endl;
Zhang_three.After_OneYear();
cout<<"\n 张三一年后的身高和体重:"<<endl;
cout<<"名字 : "<<Zhang_three.name<<"\n 身高:"<<Zhang_three.height<<"\n 体重:"<<Zhang_three.weight<<endl;
}
最后发现执行的结果和程序207.cpp 相同。如果将成员函数拿到类外定义,仍需要在类内声明函数的原型。