【编程题】 分别用成员函数和友元函数重载运算符,使对实型的运算符=、+、-、*、/ 适用于复数运算。
#include [iostream.h] class complex //复数类声明 { public: //外部接口 complex(double r=0.0,double i=0.0) //构造函数 {real=r,imag=i;} complex operator +(complex c2); //运算符"+"重载成员函数 complex operator - (complex c2); //运算符"-"重载成员函数 complex operator *(complex ); complex operator /(complex); complex operator =(complex c2) {real=c2.real;imag=c2.imag; return complex(real,imag); } void display(); //输出复数 private: //私有数据成员 double real; //复数实部 double imag; //复数虚部 }; complex complex::operator + (complex c2) //重载运算符函数实现 { return complex(real + c2.real,imag + c2.imag); } //创建-个临时无名对象作为返回值 complex complex::operator - (complex c2) //重载运算符函数实现 { return complex(real - c2.real,imag - c2.imag); } complex complex::operator *(complex c2) { double x,y; x=real*c2.real-imag*c2.imag; y=real*c2.imag+imag*c2.real; return complex(x,y); } complex complex::operator /(complex c2) { double x,y,z; x=real*c2.real+imag*c2.imag; y=real*c2.imag-imag*c2.real; z=real*c2.real+imag*c2.imag; return complex(x/z,y/z); } void complex::display() { cout<<"("<
举一反三
- 9.定义一个复数类Complex,重载运算符“+”,“—”,使之能用于复数的加,减运算,运算符重载函数作为Co
- 若对复数数据类型Complex的对象a、b实现“+”操作运算,则定义“+”运算符重载为友元函数原型是
- 1、实验目的 (1)理解运算符重载的概念。 (2)熟练掌握运算符重载的方法,包括成员函数和友元函数重载。 2、主要实验仪器及材料 计算机、安装C++( 如VC++6.0或者DEV C++ ) 3、实验内容 (1)定义日期类,重载 “++”和“--”运算符,使之能处理两个日期类对象自增和自减运算。 (2)定义复数类,重载复数的乘法“*” 运算符,完成两个复数的乘法运算。
- 成员函数中重载运算符“+”,实现a+b运算,则()。
- 下列关于运算符重载的描述中,错误的是()A.运算符不能重载B.类型转换运算符只能作为成员函数重载C.将运算符作为非成员函数重载时必须定义为友元D.重载[]运算符应完成“下标访问”操作
内容
- 0
运算符“.”称为 运算符,运算符“ -> ”称为 运算 符
- 1
若用成员函数重载运算符加号“+”,实现a+b运算,则 ( ) 。
- 2
下面有关重载的说法中,错误的是 ( )。 A: 函数重载要求同名函数在参数个数或参数类型上不同 B: 运算符重载是用同一个运算符针对不同类型数据进行不同的运算操作 C: 所有的运算符都可以重载 D: 运算符重载函数通常是类的成员函数和友元函数
- 3
以下关于运算符重载的叙述中,正确的是( )。? 重载二元运算符时,必须声明两个形参|有的运算,其运算符只能作为友元函数重载|通过运算符重载,可以定义新的运算符|若重载运算符‘+’,则相应的运算符函数名为
- 4
下面有关运算符重载的说法中,正确的是()。 A: 非静态成员函数重载运算符时带有this指针 B: 友元函数重载运算符时带有this指针 C: 成员函数与友元函数重载运算符时都不带有this指针 D: 用成员函数或友元函数重载同一运算符时,两者的参数类型与参数个数相同