注册 登录
编程论坛 C++教室

新人求助 关于重载运算符的问题

mcfing 发布于 2012-12-18 11:28, 334 次点击
#include <iostream.h>

class merchandise{
public:
  merchandise()
  {
      no=0;
      
      price=0.0;

  }

  ~merchandise()
 {
      no=0;
      
      price=0.0;

  }
  friend istream& operator>>(istream& in,merchandise& s);
  friend ostream& operator<<(ostream& out,merchandise& s);
private:
  int no;
  char *name;
  double price;
};
istream& operator>>(istream &in,merchandise &s)
{
    cout<<"请输入商品编号";
    cin>>s.no;
    cout<<"请输入商品名称";
    cin>>s.name;
    cout<<"请输入价格";
    cin>>s.price;
    return cin;

}
ostream&operator<<(ostream &out,merchandise &s)
{
    cout<<"输出结果为";
    cout<<endl;
    cout<<"编号";
    cout<<s. no;
    cout<<endl;
    cout<<"名称";
    cout<<s.name;
    cout<<"endl";
    cout<<"价格";
    cout<<s.price;
    cout<<endl;
    return cout;

}
int main()
{
  merchandise mer;
  cin>>mer;
  cout<<mer;
  return 0;
}在输入商品名称的时候会出错!
4 回复
#2
mcfing2012-12-18 11:42
自己顶
#3
wp2319572012-12-18 11:50
友元这块 暂时还不懂
我帮你转c++吧
#4
rjsp2012-12-18 12:11
程序代码:
#include <iostream>
#include <string>

class merchandise
{
public:
    merchandise() : no_(0), price_(0.0)
    {
    }

    ~merchandise()
    {
    }
private:
    int no_;
    std::string name_;
    double price_;

    friend std::istream& operator>>( std::istream& in, merchandise& s );
    friend std::ostream& operator<<( std::ostream& out, const merchandise& s );
};

std::istream& operator>>( std::istream& in, merchandise& s )
{
    return in >> s.no_ >> s.name_ >> s.price_;
}
std::ostream& operator<<( std::ostream& out, const merchandise& s )
{
    return out << "编号 " << s.no_ << '\n'
               << "名称 " << s.name_ << '\n'
               << "价格 " << s.price_;
}

using namespace std;

int main()
{
    merchandise mer;

    cout << "请输入商品编号 名称 价格" << endl;
    cin >> mer;

    cout << "输出结果为\n"
         << mer << endl;

    return 0;
}
#5
mcfing2012-12-18 12:25
回复 4楼 rjsp
受益很多,谢!
1