网站开发案例教程,php网站开发事例,青岛济南网站建设优化,部门网站建设工作总结一、重载为一般函数 格式#xff1a;返回类型 operator 运算符(参数列表)
struct Complex{//定义一个复数结构#xff1a;包括实部与虚部两部分 double real;//实部 double imag;//虚部
};
Complex operator(Complex c1,Complex c2){//对加法运算的重载#xff1a;将运算符…一、重载为一般函数 格式返回类型 operator 运算符(参数列表)
struct Complex{//定义一个复数结构包括实部与虚部两部分 double real;//实部 double imag;//虚部
};
Complex operator(Complex c1,Complex c2){//对加法运算的重载将运算符 定义为两复数相加 Complex c;c.realc1.realc2.real;c.imagc1.imagc2.imag;return c;
}
ostreamoperator(ostreamout,Complex c){out(c.realc.imagi);return out;
}
int main()
{Complex c1{1,2},c2{3,4},c3;//结构体变量的声明c3c1c2; coutc1c2c3endl;
}运行结果 二、重载为友元函数 需要访问类中的私有成员则要将该重载函数在类中声明为友元类。 格式friend 类型 重载函数名(参数);
#includeiostream
using namespace std;
class Complex{//定义一个复数类包括实部与虚部两部分 private:double real,imag;public:Complex(double r0,double i0):real(r),imag(i){}friend Complex operator(Complex c1,Complex c2);friend ostreamoperator(ostreamout,Complex c);
};
Complex operator(Complex c1,Complex c2){//对加法运算的重载将运算符 定义为两复数相加,需要对复数类的私有属性进行访问 Complex c;c.realc1.realc2.real;c.imagc1.imagc2.imag;return c;
}
ostreamoperator(ostreamout,Complex c){//需要对复数类的私有属性进行访问,声明成友元类 out(c.realc.imagi);return out;
}
int main()
{Complex c1(1,2),c2(3,4),c3;c3c1c2; coutc1c2c3endl;
}三、重载为成员函数 直接声明为成员函数
#includeiostream
using namespace std;
class Complex{//定义一个复数类包括实部与虚部两部分 private:double real,imag;public:Complex(double r0,double i0):real(r),imag(i){}Complex operator(Complex c);//直接在类中声明重载运算符 friend ostreamoperator(ostreamout,Complex c);
};
Complex Complex::operator(Complex c){//定义重载运算符 return Complex (realc.real,imagc.imag);
}
ostreamoperator(ostreamout,Complex c){//需要对复数类的私有属性进行访问,声明成友元类 out(c.realc.imagi);return out;
}
int main()
{Complex c1(1,2),c2(3,4),c3;c3c1c2; coutc1c2c3endl;
}