13th
November,2013
1、 定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。
•分别用成员函数与友元函数编写运算符重载函数;
•在主函数中定义复数对象c1(10,20)、c2(15,30),进行c2-=c1的复数运算,并输出c1、c2的复数值。
运用成员函数如下:
#include
#include
using namespace std;
class complex
{public:
complex(double r=0,double i=0){real=r;imag=i;}
complex operator -=(complex&);
void display(string);
private:
double real,imag;
};
complex complex::operator -=(complex &c)
{
return complex(real-c.real,imag-c.imag);}
void complex ::display(string str)
{
cout<
int main()
{
complex c1(10,20),c2(15,30);
cout<
c1.display("c1");
c2.display("c2");
c2=c2.operator -=(c1);
cout<
c1.display("c1");
c2.display("c2");
return 0;
}
运用友元函数如下:
#include
#include
using namespace std;
class complex
{public:
complex(double r=0,double i=0){real=r;imag=i;}
friend complex operator -=(complex &a,complex &b);
void display(string);
private:
double real,imag;
};
complex operator -=(complex &a,complex &b)
{
return complex(b.real-a.real,b.imag-a.imag);}
void complex ::display(string str)
{
cout<
int main()
{
complex c1(10,20),c2(15,30);
cout<
c1.display("c1");
c2.display("c2");
c2=operator -=(c1,c2);
cout<
c1.display("c1");
c2.display("c2");
return 0;
}
:需要注意 有一点比较特殊就是友元函数使用时在类外定义时不需要在加上类名 但不知为何直接使用c1-=c1就是没成功 后用了另一种调用方式
2、 定义一个数组类Array:
•其私有数据成员为整型一维数组a[10];
•通过构造函数给数组赋初值;
•用show函数显示数组的元素值;
•用成员函数重载运算符“+”,直接实现两个一维数组对应元素相加的运算。•在主函数中定义数组a、b分别为:
int a[10]={1,2,3,4,5,6,7,8,9,10};int b[10]={4,5,6,7,8,9,10,11,12,13};
•用Array定义三个数组对象arr1(a)、arr2(b)、arr3,执行arr3=arr1+arr2运算,输出arr3的数组元素值。
#include
using namespace std;
class Array
{public:
Array(){
int i;
for(i=0;i<10;i++) a[i]=0;
}
Array(int m[10]){
int i;
for(i=0;i<10;i++) a[i]=m[i];
}
void show(){
int i;
for(i=0;i<10;i++) cout<
cout<
}
Array operator +(Array &b);
private:
int a[10];
};
Array Array::operator +(Array &b)
{
int i,c[10];
for(i=0;i<10;i++) c[i]=b.a[i]+a[i];
return c;
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},b[10]={4,5,6,7,8,9,10,11,12,13};
Array arr1(a),arr2(b),arr3;
arr3=arr1.operator +(arr2);
cout<
arr1.show();
cout<
arr2.show();
cout<
arr3.show();
return 0;
}
•类似地,用友元函数重载运算符“+=”,实现复合赋值运算:arr1+=arr2,并输出arr1的元素值。
#include
using namespace std;
class Array
{public:
Array(){
int i;
for(i=0;i<10;i++) a[i]=0;
}
Array(int m[10]){
int i;
for(i=0;i<10;i++) a[i]=m[i];
}
void show(){
int i;
for(i=0;i<10;i++) cout<