正文

第二课 C++经典知识回顾(一)2007-09-22 12:33:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/29592.html

分享到:

第二课: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类。

 

阅读(4662) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册