第二课:C++经典知识回顾 一、类的定义与应用 在C语言中,我们学过结构体,用于将描述某一对象的若干变量包装成一个整体使用,但没有但没有将与该对象相关的函数包含进来。C语言中的结构体只能描述一个对象的特征(属性),不能描述一个对象的动作(方法)。在C++中,我们是通过类的定义来解决这个问题的,在类的定义中,不仅可以包含变量,还可以包含函数。 我们通过一段程序来讲解类的使用。 #include "iostream.h" class CPoint { public: int x1; int y1; void Output(); CPoint(); CPoint(int x2,int y2) ~CPoint(); private: int x2; int y2; int *pCount; }; //注意类和结构定义完后,一定要用";"号结尾,忘记";"是许多人常犯的错误。 //在c++中,//......用于注释一行,/*......*/可以注释多行。 void CPoint::Output() { if(pCount) (*pCount)++; else { pCount=new int; *pCount=1; } cout<<"the first point is ("<<x1<<','<<y1<<')'<<endl; cout<<"the second point is ("<<x2<<','<<y2<<')'<<endl; } CPoint::CPoint() { pCount=0; cout<<"the first constructor is calling"<<endl; } CPoint::CPoint(int x2,int y2) { this->x2=x2; this->y2=y2; pCount=0; cout<<"the second constructor is calling"<<endl; } CPoint::~CPoint() { if(pCount) { cout<<"你调用了Output成员函数共"<<*pCount<<"次"<<endl; delete pCount; } else cout<<"你还没有调用过Output成员函数"<<endl; cout<<"the deconstructor is calling"<<endl; } void Output(CPoint pt) { cout<<"the first point is ("<<pt.x1<<','<<pt.y1<<')'<<endl; //cout<<"the second point is ("<<pt.x2<<','<<pt.y2<<')'<<endl; //上面被注释的语句会造成编译错误,因为不能从类的外部访问类中的私有成员。 } void main() { if(1==1)//限定pt变量的有效范围 { CPiont pt; cout<<"请输入两个整数"; cin>>pt.x1>>pt.y1; //pt.x2=10; //pt.y2=10; //上面被注释的语句会造成编译错误,因为不能从类的外部访问类中的私有成员。 pt.Output(); pt.Output(); pt.Output();//故意演示Output被调用多次的情况。 Output(pt); } CPoint pt(10,10); pt.Output(); } 上面的代码定义了一个类CPoint,其中包含有变量,称之为成员变量,也包含有函数的声明,称之为成员函数。 在类定义之外,我们必须对成员函数进行实现,成员函数的实现格式为: 返回类型 类名::函数名(参数列表) { 函数体代码 } 上面的代码也编写了一个名为Output的全局函数,注意与类CPoint中的Output成员函数区别。 上面的代码还编写了一个main主函数,其中的代码演示了如何使用CPoint类。

评论