永发信息网

c++里的sales_item什么意思?

答案:3  悬赏:80  手机版
解决时间 2021-11-25 21:02
c++里的sales_item什么意思?
最佳答案
源码:
  
  
  
  
  #ifndef SALESITEM_H
  // we're here only if SALESITEM_H has not yet been defined
  #define SALESITEM_H
  
  // Definition of Sales_item class and related functions goes here
  #include
  #include
  
  class Sales_item {
  // these declarations are explained section 7.2.1, p. 270
  // and in chapter 14, pages 557, 558, 561
  friend std::istream& operator>>(std::istream&, Sales_item&);
  friend std::ostream& operator<<(std::ostream&, const Sales_item&);
  friend bool operator<(const Sales_item&, const Sales_item&);
  friend bool
  operator==(const Sales_item&, const Sales_item&);
  public:
  // constructors are explained in section 7.1.4, pages 262 - 265
  // default constructor needed to initialize members of built-in type
  Sales_item() = default;
  Sales_item(const std::string &book): bookNo(book) { }
  Sales_item(std::istream &is) { is >> *this; }
  public:
  // operations on Sales_item objects
  // member binary operator: left-hand operand bound to implicit this pointer
  Sales_item& operator+=(const Sales_item&);
  
  // operations on Sales_item objects
  std::string isbn() const { return bookNo; }
  double avg_price() const;
  // private members as before
  private:
  std::string bookNo; // implicitly initialized to the empty string
  unsigned units_sold = 0; // explicitly initialized
  double revenue = 0.0;
  };
  
  // used in chapter 10
  inline
  bool compareIsbn(const Sales_item &lhs, const Sales_item &rhs)
  { return lhs.isbn() == rhs.isbn(); }
  
  // nonmember binary operator: must declare a parameter for each operand
  Sales_item operator+(const Sales_item&, const Sales_item&);
  
  inline bool
  operator==(const Sales_item &lhs, const Sales_item &rhs)
  {
  // must be made a friend of Sales_item
  return lhs.units_sold == rhs.units_sold &&
  lhs.revenue == rhs.revenue &&
  lhs.isbn() == rhs.isbn();
  }
  
  inline bool
  operator!=(const Sales_item &lhs, const Sales_item &rhs)
  {
  return !(lhs == rhs); // != defined in terms of operator==
  }
  
  // assumes that both objects refer to the same ISBN
  Sales_item& Sales_item::operator+=(const Sales_item& rhs)
  {
  units_sold += rhs.units_sold;
  revenue += rhs.revenue;
  return *this;
  }
  
  // assumes that both objects refer to the same ISBN
  Sales_item
  operator+(const Sales_item& lhs, const Sales_item& rhs)
  {
  Sales_item ret(lhs); // copy (|lhs|) into a local object that we'll return
  ret += rhs; // add in the contents of (|rhs|)
  return ret; // return (|ret|) by value
  }
  
  std::istream&
  operator>>(std::istream& in, Sales_item& s)
  {
  double price;
  in >> s.bookNo >> s.units_sold >> price;
  // check that the inputs succeeded
  if (in)
  s.revenue = s.units_sold * price;
  else
  s = Sales_item(); // input failed: reset object to default state
  return in;
  }
  
  std::ostream&
  operator<<(std::ostream& out, const Sales_item& s)
  {
  out << s.isbn() << " " << s.units_sold << " "
  << s.revenue << " " << s.avg_price();
  return out;
  }
  
  double Sales_item::avg_price() const
  {
  if (units_sold)
  return revenue/units_sold;
  else
  return 0;
  }
  #endif
全部回答
sales_item.h是一个需要你自己编写的头文件,其中需要实现某些功能……
sales_item
看你的链接,是一个类。
也就是商品的类。
如果输入到程序的是
0-201-70353-x 4 24.99
则输出将是
0-201-70353-x 4 99.96 24.99
这里为什么cout<你应该是这里有怀疑吧,为什么可以cout一个对象。
那你就要看看你发的链接下面的代码了,估计你多半是新手看不懂,
或者干脆懒得看吧。
friend std::ostream& operator<<(std::ostream&, const Sales_item&);
注意类中有这样儿一条声明,这句是声明了对象的输出方式和操作符<<的重载。
写就是说,这个对象的cout<<操作跟你平时用的标准库里面的cout<<已经不一样了。
已经被重载成了他自己需要的功能。
目测也就是输出0-201-70353-x 4 99.96 24.99
商品的编号,99.96不知道什么意思,但是应该也是对象的一个属性,然后就是24.99单价。
希望能帮到你,
不明白可以追问,望采纳。追问我看书上说要把sales_item.h源文件复制到工作目录。

这一步是怎么操作??工作目录是哪里呢?谢谢!追答所谓的工作目录就是你建立的项目的项目文件夹,
如果你单单复制最后一个文件的话,应该会有问题吧。
前提是这个类的全部定义和初始化等操作都在这个文件中才行。
一般稍微大点儿的都会有一个相应的CPP文件,你可以检查一下有没有这个文件,
如果没有的话,那么直接复制这一个就行。
还有,光复制到工作目录还不够。必须要include到你的项目中才行。
操作就是右击项目,然后添加已有项。选择这个添加就行了。
要在哪个文件中使用这个类就必须引用这个类的头文件。
#include
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
系统安全的主要防护措施有哪些
一些日常声音的频率
案件经过中院,然后又发回重审,是怎么回事?
民用的220V电压能产生(可伤人的)跨步电压吗
你什么时候回英国总部上班。英文
乘坐602公交车从哪站下距哈三院较近
第一个就被难住了,15个看图猜成语,猜对10个
中国电信(社区营业厅)(建安中路88号中国电信)
怎样向人事方向发展
蓄热式电暖器时间怎么调?我用的是蓝景圣诺尔
想买一个苹果8,在天猫上为什么店铺有些贵有
越视界北京软文营销公司?
掉进了《延禧攻略》大坑啊!!要随时随地追剧
你骂了一个男生
中国电信(社区营业厅)(南门外36号中国电信)地
推荐资讯
偶遇网咖地址在什么地方,我要处理点事!
学习谷日本的教育机构的课程好吗
韩国tonytint唇漆好用吗
桂林山水甲天下,瞧,这些山有的像什么,有的像
1米7的身高,一只手臂83CM,算长吗?一般是多
雪彩化妆品地址在什么地方,想过去办事,
气虚可以服用浮色参蚕片吗?
火车票代售点(毕塬西路与新兴北路交叉口北)地
88毫米高射炮的反坦克能力和虎式虎王相比哪个
将下列谚语,熟语补充完整。
情人不回我微信却和别的女人聊,他是什么意思
高中生物 d选项
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?