读书人

初学者求教高手看一下拿出错了!

发布时间: 2012-03-30 17:32:09 作者: rapoo

菜鸟求教高手看一下拿出错了!!!!!
#include<iostream>
using namespace std;
class Sale_item{
float price;
int number;
public:
Sale_item(float price=0, int number=0):price(price),number(number){};
friend istream& operator>>(istream &, Sale_item &);
friend ostream& operator<<(ostream &, Sale_item &);
friend Sale_item operator+(const Sale_item& ,const Sale_item &);


};
istream& operator>>(istream & cin, Sale_item &A)
{
cin>>A.price>>A.number;
}
ostream& operator<<(ostream &cout, Sale_item &A)
{
cout<<"Price:"<<A.price<<" "<<"Number:"<<A.number;
}
Sale_item operator+(const Sale_item& A,const Sale_item &C)
{
float p=A.price+C.price;
int n=A.number+C.number;
Sale_item Q(p,n);
return Q;

}
int main()
{

Sale_item book1(2,9);
Sale_item book;
Sale_item book2=book1+book;
cout<<book2<<endl; 输出book2时真确?
cout<<book1+book2<<endl; 那为什么输出book1+book时不正确???


}

[解决办法]
见注释

C/C++ code
#include<iostream>using namespace std;class Sale_item{    float price;                          //primer 里推荐使用double 少用float    int number;public:    Sale_item(float price=0, int number=0):price(price),number(number){};    friend istream& operator>>(istream &, Sale_item &);    friend ostream& operator<<(ostream &, Sale_item &);    friend Sale_item operator+(const Sale_item& ,const Sale_item &);  };istream& operator>>(istream &os, Sale_item &A)  //此处注意你的默认形参 istream &cin??                                                       //如果你的本意不是默认实参是cin的话 形参名最好改下{    cin>>A.price>>A.number;    return os;                                      //缺了返回值}ostream& operator<<(ostream &os, Sale_item &A)     //此处道理同上{    cout<<"Price:"<<A.price<<" "<<"Number:"<<A.number;    return os;                                           //没有返回值}Sale_item operator+(const Sale_item& A,const Sale_item &C)                                                              {    float p=A.price+C.price;    int n=A.number+C.number;    Sale_item Q(p,n);    return Q;   }   int main(){    Sale_item book1(2,9);    Sale_item book;    Sale_item book2=book1+book;    cout<<book2<<endl;                    // 输出book2时真确?    cout<<book1+book2<<endl;             //那为什么输出book1+book时不正确???                                        //这里你看清楚 点 你输出的是book1 + boo2 也就是 4 9 输出无误    system("pause");    return 0;                             //main缺少了返回值 } 

读书人网 >C++

热点推荐