运算符重载问题
c++吧
全部回复
仅看楼主
level 1
MgcosA♬ 楼主
#include <iostream>
#include <cmath>
using namespace std;
class xiangliang
{
private:
double x, y, z;
public:
xiangliang(double sx=0, double sy=0, double sz=0)
{
x = sx; y = sy; z = sz;
}
void shuchu()
{
cout <<"(" <<x <<"," <<y <<"," <<z <<")";
}
double mo()
{
return (sqrt(x*x+y*y+z*z));
}
xiangliang operator + (xiangliang xl)
{
return xiangliang(x+xl.x, y+xl.y, z+xl.z);
}
xiangliang operator - (xiangliang xl)
{
return xiangliang(x-xl.x, y-xl.y, z-xl.z);
}
double operator * (xiangliang xl)
{
return (x*xl.x + y*xl.y + z*xl.z);
}
xiangliang operator * (double k)
{
return xiangliang(x*k, y*k, z*k);
}
friend xiangliang operator * (double &k, xiangliang &xl);
xiangliang operator % (xiangliang xl)
{
return xiangliang(y*xl.z-xl.y*z, z*xl.x-xl.z*x, x*xl.y-xl.x*y);
}
};
xiangliang operator * (double &k, xiangliang &xl)
{
return xiangliang(xl.x*k, xl.y*k, xl.z*k);
}
//定义double*xiangliang运算符重载
int main()
{
xiangliang a(1, 2, 3), b(2, 3, 4);
double c;
xiangliang d;
cout <<"a="; a.shuchu(); cout <<endl;
cout <<"b="; b.shuchu(); cout <<endl;
c = a * b;
d = 4.5 * a;
//报错:没有与这些操作数匹配的“*”运算符,操作数类型为double*xiangliang
cout <<"a·b=" <<c <<endl;
cout <<"4a="; d.shuchu();
return 0;
}
求指教。
2012年11月27日 14点11分 1
1