菜鸟求教高手看一下拿出错了!!!!!
#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缺少了返回值 }