第5章实验:类与对象1

更新时间:2023-09-29 01:30:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验十三 类和对象定义

【预习内容】

预习C++的类和对象的概念。 【实验目的】

掌握类和对象的概念,熟悉对象中成员概念及访问方法。 【实验内容】

设计点(Tpoint)类的定义程序 参考程序:

将下述关于点类的定义放在TPoint.h文件中。 class TPoint {

public: void SetPoint(int x,int y); int Xcoord(){return X;} int Ycoord(){return Y;}

void Move(int xOffset,int yOffset); private: int X,Y; };

void TPoint::SetPoint(int x,int y) { X=x; Y=y; }

void TPoint::Move(int xOffset,int yOffset) {

X+=xOffset; Y+=yOffset; }

#include #include\void main() { TPoint p1,p2; p1.SetPoint(3,5);

p2.SetPoint(8,10);//p2.X=8 p2.Y=10 p1.Move(2,1);

p2.Move(1,-2);//p2.X=9 p2.Y=8

cout<<\cout<<\}

问题:

⑴、分析该程序的输出结果,理解类与对象的关系。

⑵、Move()函数的作用是什么?

⑶、该类有四个公有成员函数,其中Xcoord() 和Ycoord()定义在类体内,而setPoint()和Move()定义在类体外,理解类体内定义和类体外定义的区别。

实验十四 构造函数与析构函数

【预习内容】 预习构造函数与析构函数的概念。 【实验目的】

掌握构造函数和析构函数的特点、功能以及函数的调用方法。 【实验内容】

设计具有构造函数和析构函数对类中的成员进行初始化和空间释放的程序。 参考程序: class TPoint {

public: TPoint(int x,int y){X=x;Y=y;cout<<\构造函数 ~TPoint(){cout<<\析构函数 int Xcoord(){return X;} int Ycoord(){return Y;} private: int X,Y; };

#include #include\void main() { TPoint p1(5,7); cout<<\问题:

⑴、对象p1如何被初始化的?

⑵、改写以上程序通过定义复制构造函数,用对象p1初始化对象p2。 ⑶、语句cout<

实验十五 友元函数与静态成员

【预习内容】 预习友元函数与静态成员的概念。 【实验目的】

1. 掌握友元函数的定义、使用方法以及特点。 2. 掌握静态成员函数和静态数据成员的功能。 【实验内容】

1. 设计类A的友元函数、友元类B,分析程序中友元的作用及对类的封装特性的破坏性,

理解友元函数的功能。

2.设计一个含有静态成员、静态成员函数的程序,分析程序结果,理解静态成员(函数)与类和对象的关系。

参考程序:

#include class A { friend class B;//友元类的声明 public: void Set(int i){x=i;} friend int add(A & f1);// 友元函数的声明 void Display() { cout<<\ } private: int x; static int y; };

int add(A & f1) {return f1.x+1;} class B {

public: B(int i,int j); void Display(); private: A a;//A类的对象a作为类B的私有成员 };

int A::y=1;//静态成员必须先赋初值 B::B(int i,int j) { a.x=i; A::y=j; }

void B::Display() { cout<<\}

void main() { A b; b.Set(5); cout<

b.Display(); }

问题:

⑴、分析友元函数add()的定义、调用与成员函数的区别。 ⑵、分析友元类B的成员函数如何引用类A的私有成员的?

⑶、根据运行结果分析下列程序中静态成员B值的变化和静态成员函数的引用方式。 #include class M {

public: M(int a){A=a;B+=a;} static void f1(M m);//静态公有成员函数声明 private: int A; static int B;//静态私有成员 };

int M::B=0;

void M::f1(M m)//在静态成员函数中对不同类型成员的引用方式 { cout<<\引用类的非静态成员,用点域法 cout<<\引用类的静态成员,直接引用 }

void main() { M P(5),Q(10); M::f1(P);//调用静态成员函数 M::f1(Q); }

本文来源:https://www.bwwdw.com/article/bsid.html

Top