实验八 友元函数和友元类
, 一,实验目的
1. 熟悉类和模板类的使用。
2. 掌握友元函数和友元类的声明格式。
3. 了解友元函数和友元类的作用,使用友元的利弊。
4. 掌握静态数据成员和函数成员的使用方法,它们同一般成员的差异。 5. 掌握栈和队列的运算特点和有关算法。 二、实验内容
1. 定义复数类Complex,使用友元,完成复数的加法、减法、乘法、除法运算,以及
对复数的输出。
# include
float real,imag; public:
complex(float r=0,float i=0) {real=r;imag=i;} void print();
friend complex operator+(complex a,complex b); friend complex operator-(complex a,complex b); friend complex operator*(complex a,complex b); friend complex operator/(complex a,complex b); };
void complex::print() {
cout< if(imag>0)cout<<\ if(imag!=0)cout< complex operator+(complex a,complex b) { complex temp; temp.real=a.real+b.real; temp.imag=a.imag+b.imag; return temp; } complex operator-(complex a,complex b) { complex temp; temp.real=a.real-b.real; temp.imag=a.imag-b.imag; return temp; } complex operator*(complex a,complex b) { complex temp; temp.real=a.real*b.real-a.imag*b.imag; temp.imag=a.real*b.imag+a.imag*b.real; return temp; } complex operator/(complex a,complex b) { complex temp; float tt; tt=1/(b.real*b.real+b.imag*b.imag); temp.real=(a.real*b.real+a.imag*b.imag)*tt; temp.imag=(b.real*a.imag-a.real*b.imag)*tt; return temp; } void main() { complex c1(2.3,4.6),c2(3.6,2.8),c3; c1.print(); c2.print(); c3=c1+c2; c3.print(); c3=c1-c2; c3.print(); c3=c1*c2; c3.print(); c3=c1/c2; c3.print(); } 2,定义矩阵类,使用友元实现矩阵的常用运算 #include class Str { private: int m,n;//表示矩阵的行数和列数 double s[100][100];//定义二维数组存储矩阵 public: int getm(); int getn(); void input(); void output(); friend Str operator+(Str A,Str B); friend Str operator-(Str A,Str B); friend Str operator*(Str A,Str B);//运算符的重载 }; Str operator+(Str A,Str B)//矩阵相加函数 { Str C; int i,j; for(i=0;i Str operator-(Str A,Str B)//矩阵相减函数 { Str C; int i,j; for(i=0;i Str operator*(Str A,Str B)//矩阵相乘函数 { Str C; int i,j,k; for(i=0;i C.m=A.m;C.n=B.n; return C; } void Str::input()//矩阵输入函数 { int i,j; do {cout<<\请输入矩阵的行数、列数:\ cin>>m>>n;}while(m<1||m>100||n<1||n>100);//保证输入矩阵的行数和 列数有效 cout<<\请输入矩阵:\ for(i=0;i for(j=0;j void Str::output()//矩阵输出函数 { int i,j; cout<<\得到的矩阵是:\ for(i=0;i for(j=0;j int Str::getm() { return m; } int Str::getn() { return n; } void menu() { cout<<\、矩阵相加运算\ cout<<\、矩阵相减运算\ cout<<\、矩阵相乘运算\ cout<<\、退出运算系统\} int main() { int choice,i=1; Str A,B,C; cout< cout<<\ 欢迎使用矩阵运算系统\ cout< 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库实验八在线全文阅读。
相关推荐: