【问题描述】
定义一个3维向量类,要求重载运算符“+”实现向量加法和 “+=”实现赋值加法。
【样例输入】
23.4 -9.8 15
7.28 66 29.5
【样例输出】
v1: (30.68,56.2,44.5)
v1: (54.08,46.4,59.5)
【说明】
【样例输出】的每行数据后面没有空行。
#include <iostream>
using namespace std;
class Vector
{
double v[3];
public:
Vector();
Vector operator+(Vector c);
const Vector& operator+=(const Vector& x);
friend istream& operator>>(istream& in, Vector& vec) ;
void Print()
{
cout<<'('<<v[0]<<','<<v[1]<<','<<v[2]<<')'<<endl;
}
};
int main()
{
Vector v1,v2,v3;
cin>>v2;
cin>>v3;
v1=v2+v3;
cout<<"v1: ";
v1.Print();
v1+=v2;
cout<<"v1: ";
v1.Print();
}
Vector::Vector(){
v[0]=0;
v[1]=0;
v[2]=0;
}
Vector Vector::operator+(Vector c){
Vector a;
a.v[0]=v[0]+c.v[0];
a.v[1]=v[1]+c.v[1];
a.v[2]=v[2]+c.v[2];
return a;
}
const Vector& Vector::operator+=(const Vector& c){
for (int i = 0; i < 3; ++i) {
v[i] +=c.v[i];
}
return *this;
}
istream& operator>>(istream& in, Vector& vec) {
in >> vec.v[0] >> vec.v[1] >> vec.v[2];
return in;
}
【注】此分栏为西安理工大学C++练习题,所有答案仅供同学们参考。