我需要重载多个不同对象的加法运算符并返回一个'集群对象: “重载加法运算符(+)以添加桌面,笔记本电脑和群集的任何实例组合。此运算符应返回类型为cluster的对象” 所以,如果我有desktop1 + laptop1 + laptop2;我需要它返回一个集群,它添加所有的RAM,以及每个对象的其他变量。但它只会添加所有对象从计算机类继承的变量。这是我项目其余部分的代码。谢谢!
#include <iostream>
using namespace std;
class computer
{
public:
double RAM;
double CPUSpeed;
int numberOfCores;
double HDDSize;
virtual void print();
};
class desktop : public computer
{
public:
bool hasMonitor;
double monitorSize;
friend istream& operator>> (istream &in, desktop &myDesktop);
};
class laptop : public computer
{
public:
double screenSize;
};
class cluster : public computer
{
public:
int numOfComp;
};
desktop::desktop()
{
RAM = 0;
CPUSpeed = 0;
numberOfCores = 0;
HDDSize = 0;
hasMonitor = 0;
monitorSize = 0;
}
laptop::laptop()
{
RAM = 0;
CPUSpeed = 0;
numberOfCores = 0;
HDDSize = 0;
screenSize = 0;
}
cluster::cluster()
{
RAM = 0;
CPUSpeed = 0;
numberOfCores = 0;
HDDSize = 0;
numOfComp = 0;
}
istream& operator>> (istream &in, desktop &myDesktop)
{
in >> myDesktop.hasMonitor;
in >> myDesktop.monitorSize;
in >> myDesktop.RAM;
in >> myDesktop.CPUSpeed;
in >> myDesktop.HDDSize;
in >> myDesktop.numberOfCores;
return in;
}
istream& operator>> (istream &in, laptop &mylaptop)
{
in >> mylaptop.RAM;
in >> mylaptop.CPUSpeed;
in >> mylaptop.HDDSize;
in >> mylaptop.numberOfCores;
in >> mylaptop.screenSize;
return in;
}
istream& operator>> (istream &in, cluster &myCluster)
{
in >> myCluster.RAM;
in >> myCluster.CPUSpeed;
in >> myCluster.HDDSize;
in >> myCluster.numberOfCores;
in >> myCluster.numOfComp;
return in;
}
operator+(computer &myComp)
{
return
答案 0 :(得分:1)
如果您只想添加他们从计算机继承的所有类的公共值,您可以这样做:
cluster operator+(const computer& comp1, const computer& comp2)
{
cluster ret;
ret.RAM = comp1.RAM+comp2.RAM;
ret.CPUSpeed = comp1.CPUSpeed+comp2.CPUSpeed;
ret.numberOfCores = comp1.numberOfCores+comp2.numberOfCores;
ret.HDDSize = comp1.HDDSize+comp2.HDDSize;
return ret;
}
int main()
{
laptop laptop1;
desktop desktop1;
desktop desktop2;
cluster mycluster = laptop1+desktop1+desktop2;
return 0;
}
链式+运算符从右向左计算。该函数返回一个集群对象,然后可以将其用作下一次添加的右手操作数。