C++多态与重载

#include<iostream>#include<string>usingnamespacestd;classComplex{doublea;doubleb;publ... #include<iostream>
#include<string>
using namespace std;
class Complex
{
double a;
double b;
public:
Complex(){a=0;b=0;}
Complex operator+(Complex another)
{
Complex add;
add.a=a+another.a;
add.b=b+another.b;
return add;
}
void Putln()
{
cin>>a>>b;
}
void Show()
{
cout<<"("<<a<<"+"<<b<<"i)";
}
};
class Summator
{
public:
int Addition(int a,int b);
float Addition(float a,float b);
string Addition(string a,string b);
Complex Addition(Complex a,Complex b);
};
int Summator::Addition(int a,int b)
{
return a+b;
}
float Summator::Addition(float a,float b)
{
return a+b;
}
string Summator::Addition(string a,string b)
{
return a+b;
}
Complex Summator::Addition(Complex a,Complex b)
{
return a+b;
}
void main()
{
Summator summator;
int intA,intB;
float floatA,floatB;
string stringA,stringB;
Complex complexA,complexB;
cout<<"请输入两个整数:"<<endl;
cin>>intA>>intB;
cout<<intA<<"+"<<intB<<"="<<summator.Addition(intA,intB)<<endl;
cout<<"请输入两个小数:"<<endl;
cin>>floatA>>floatB;
cout<<floatA<<"+"<<floatB<<"="<<summator.Addition(floatA,floatB)<<endl;
cout<<"请输入两个字符串:"<<endl;
cin>>stringA>>stringB;
cout<<stringA<<"+"<<stringB<<"="<<summator.Addition(stringA,stringB)<<endl;
cout<<"请输入两个复数"<<endl;
complexA.Putln();
complexB.Putln();
complexA.Show();
cout<<"+";
complexB.Show();
cout<<"=";
summator.Addition(complexB,complexA).Show();
cout<<endl;
}
Complex类中的运算符重载怎么理解?Complex operator+(Complex another)
还有summator.Addition(complexB,complexA).Show();和Complex Summator::Addition(Complex a,Complex b)怎么理解
展开
 我来答
icepointfirst
2012-06-26 · TA获得超过304个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:226万
展开全部
Complex operator+(Complex another)
运算符重载就是重新定义“+”加号这个运算符。原来+加号只能对整型数据,浮点型数据,字符型(可以看成特殊的整型数据)这些类型相加。
但是运算符重载后,就可以进行Complex类的两个对象相加了。
专业保证
2012-06-26 · TA获得超过473个赞
知道小有建树答主
回答量:552
采纳率:0%
帮助的人:255万
展开全部
看书 c++ primer plus
运算符重载 其实就是两个对象的操作。
Complex operator+(Complex another)
加号的重载,就是把两个对象进行加法运算。
如果不做重载,那你就要把对象的变量依个进行加法,
但是类变量是私有的,只能封装。

summator.Addition(complexB,complexA).Show();
这个就是类对象的一个使用了
首先 summator是一个实例化的对象,这个对象有一个方法 是Addition
summator.Addition(complexB,complexA) 这样就是调用这个方法对不对?
Complex Addition(Complex a,Complex b);这个方法有个返回值
他也是一个实例化的对象 Addition(complexB,complexA)这个返回一个对象。
Addition(complexB,complexA).Show() 这样调用对吧
合起来呢?
summator.Addition(complexB,complexA)生成一个对象,
然后对象再调用Show()
更多追问追答
追问
Complex operator+(Complex another)
{ Complex add; add.a=a+another.a; add.b=b+another.b; return add; }不懂呀
追答
这个是对象的操作,比如A对象
A+ 就表示这个对象的一种调用方式 就像 A.xxx()一样
A+参数自然就是对象another
然后声明另一个临时存储的对象 add
然后 把本身的a+another.a 加起来 最后返回 临时的对象一个拷贝。
你应该知道 return 是返回的一个对象的拷贝
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦梦521521
2012-06-26 · TA获得超过185个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:232万
展开全部
你先了解重载的概念,还有为什么用重载,,

还有什么情况下,叫多态,

如果这些你没有弄懂,跟你说了也没用
更多追问追答
追问
Complex operator+(Complex another)什么意思?
追答
Complex operator+(Complex another) 继承
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式