友元函数和友元类的定义及使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++实验报告

实验名称

友元函数和友元类的定义及使用

实验目的

理解对象与类的关系,掌握对象的创建和使用

掌握构造函数、析构函数的概念及使用方法

掌握内存的动态分配的概念和使用方法

掌握对象数组和对象指针

掌握函数调用中参数的传递

掌握友元函数和友元类的定义及使用

class 类名 {

private:

数据成员或成员函数

protected:

数据成员或成员函数

public:

数据成员或成员函数

};

实验内容

有Distance类和Point类,将Distance类定义为Point类的友元类来实现计算两点之间距离

实验代码

// point.h

class Distance;

class Point

{

public:

Point(int xx=0,int yy=0)

{

X=xx;

Y=yy;

}

friend class Distance;

private:

int X,Y;

};

class Distance

{

public:

float fDist(Point a,Point b);

};

//point.cpp

#include"iostream"

#include"math.h"

using namespace std;

#include"point.h"

#include"math.h"

int _tmain(int argc, _TCHAR* argv[])

{

Point myp1(1,1),myp2(4,5);

Distance d;

cout<<"The distance is: ";

cout<

return 0;

}

float Distance::fDist(Point p1,Point p2)

{

double x,y;

x=p1.X -p2.X ;

y=p1.Y -p2.Y ;

return float(sqrt(x*x+y*y));

}

心得体会

通过本次试验,让我更加熟练运用了友元函数和友元类的定义及使用,加快了学习的进程,知识的掌握

实验名称

运算符重载

实验目的

理解为什么要进行运算符重载,在什么情况下进行运算符重载。

掌握成员函数重载运算符。

掌握友元函数重载运算符。

理解并掌握引用在运算符重载中的作用。

理解类型转换的必要性,掌握类型转换的使用方法

实验内容

编写一个程序,用成员函数重载运算符“+”和“”,实现两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。

实验代码

const int m=3;

const int n=4;

class Matrix // matrix.h

{

private:

int a[m][n];

public:

Matrix();

Matrix(int b[][n]);

Matrix operator +(Matrix b);

Matrix operator -(Matrix b);

void Print();

};

// matrix.cpp

#include"iostream"

using namespace std;

#include"matrix.h"

int main( )

{

Matrix a,c;

int x[m][n];

int i,j;

cout<<"input Matrix"<

for(i=0;i

for(j=0;j

cin>>x[i][j];

Matrix b(x);

c=a+b;

cout<

c.Print ();

c=a-b;

cout<

c.Print ();

return 0;

}

Matrix::Matrix()

{

int i,j;

for (i=0;i

for(j=0;j

a[i][j]=2;

}

Matrix::Matrix(int b[][n])

{

int i,j;

for (i=0;i

for(j=0;j

a[i][j]=b[i][j];

}

Matrix Matrix::operator +(Matrix b)

{

Matrix c;

int i,j;

for (i=0;i

for(j=0;j

c.a[i][j]=a[i][j]+b.a[i][j];

return c;

}

Matrix Matrix::operator -(Matrix b)

{

Matrix c;

int i,j;

for (i=0;i

for(j=0;j

c.a[i][j]=a[i][j]-b.a[i][j];

return c;

}

void Matrix::Print()

{

int i,j;

for(i=0;i

{

for(j=0;j

cout<

cout<

}

}

心得体会

通过本次试验我理解了为什么要进行运算符重载,在什么情况下进行运算符重载,掌握成员函数重载运算符,掌握友元函数重载运算符,理解并掌握引用在运算符重载中的作用,加深了我对于运算符重载运用的认识。

相关文档
最新文档