首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么减法的运算符操作一直不对解决方案

2012-05-09 
为什么减法的运算符操作一直不对#include stdafx.h#include iostream.hclass vect{private:float *pi

为什么减法的运算符操作一直不对

#include "stdafx.h"
#include "iostream.h"
class vect{
private:
float *p;
int n;
public:
vect(){p=NULL;n=0;}
vect(float b[],int m){
n=m;
p=new float[n];
for(int i=0;i<n;i++)
p[i]=b[i];
}
friend vect operator-(vect b,vect a);
vect operator+(vect b){
for(int j=0;j<n;j++)
{
p[j]=p[j]+b.p[j];
}
return *this;
}
void print(){
for(int i=0;i<n;i++)
cout<<p[i]<<" ";
}
};
vect operator-(vect a,vect b){
vect c;
for(int i=0;i<a.n;i++)
{
c.p[i]=a.p[i]-b.p[i];
}
return c;
}
int main(int argc, char* argv[])
{
float a[10],b[10];
int n,m;
cout<<"输入a,b向量和他们的维数"<<endl;
cout<<"维数:";
cin>>n>>m;
cout<<"a的值:"<<endl;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cout<<"b的值:"<<endl;
for(int j=0;j<m;j++)
{
cin>>b[j];
}
if(m==n)
{
vect x(a,n);
vect y(b,m);
vect l;
vect k;
l=x+y;
k=x-y;
l.print();
k.print();
}
else
cout<<"元素个数不同不能相加减";
return 0;
}

[解决办法]
给你添加了个拷贝构造函数,还有就是不是你的-操作符么有效果,而是你在+里面修改了值的。

C/C++ code
class vect{private:    float *p;    int n;public:    vect(){p=NULL;n=0;}    vect(float b[],int m){        n=m;        p=new float[n];        for(int i=0;i<n;i++)            p[i]=b[i];    }    vect(const vect& obj)    {        if (!p)        {            delete[] p;        }        n = obj.n;        p = new float[obj.n];        for (int i=0;i<obj.n;++i)        {            p[i]=obj.p[i];        }    }    friend vect operator-(vect b,vect a);    vect operator+(vect b){        for(int j=0;j<n;j++)        {            p[j]=p[j]+b.p[j];        }        return *this;    }    void print(){        for(int i=0;i<n;i++)            cout<<p[i]<<" ";    }};vect operator-(vect a,vect b){    vect c(a.p,a.n);    for(int i=0;i<a.n;i++)    {        c.p[i]=a.p[i]-b.p[i];    }    return c;}int main(int argc, char* argv[]){    float a[10],b[10];    int n,m;    cout<<"输入a,b向量和他们的维数"<<endl;    cout<<"维数:";    cin>>n>>m;    cout<<"a的值:"<<endl;    for(int i=0;i<n;i++)    {        cin>>a[i];    }    cout<<"b的值:"<<endl;    for(int j=0;j<m;j++)    {        cin>>b[j];    }    if(m==n)    {        vect x(a,n);        vect y(b,m);        vect l;        vect k;        l=x+y;        k=x-y;        l.print();        k.print();    }        else        cout<<"元素个数不同不能相加减";    return 0;} 

热点排行