14.1 Sales_item class

本文介绍了一个用于处理图书销售数据的C++类Sales_item。该类包含操作符重载,如输入/输出、比较和算术操作,以及成员函数来获取和设置数据,如平均价格和ISBN号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sales_item.h

#pragma once
#include <iostream>
#include <string>

class Sales_item {
    friend std::ostream &operator<<(std::ostream &out, const Sales_item &s);
    friend std::istream &operator>>(std::istream &in, Sales_item &s);
    friend bool operator==(const Sales_item &lhs, const Sales_item &rhs);
    friend bool operator!=(const Sales_item &lhs, const Sales_item &rhs);
    friend bool operator<(const Sales_item &lhs, const Sales_item &rhs);
public:
    Sales_item() :bookNo(), unit_sold(0), revenue(0) {};
    Sales_item(const std::string &s) : bookNo(s), unit_sold(0), revenue(0) {};
    Sales_item(const Sales_item &obj) : bookNo(obj.bookNo), unit_sold(obj.unit_sold), revenue(obj.revenue) {}
    Sales_item(std::istream &in) {
        in >> bookNo >> unit_sold >> revenue;
    }

    Sales_item operator+=(const Sales_item &);
    Sales_item &operator=(const std::string &s);
    Sales_item &operator=(const Sales_item &s);
    std::string get_boolNo() const;
    double avg_price() const;

private:
    std::string bookNo;
    unsigned unit_sold;
    double revenue;
};

Sales_item operator+(const Sales_item &lhs, const Sales_item &rhs);

Sales_item.cpp

#include "Sales_item.h"

std::ostream &operator<<(std::ostream &out, const Sales_item &s) {
    out << s.bookNo << " " << s.revenue << " " << s.unit_sold << s.avg_price();
    return out;
}

std::istream &operator>>(std::istream &in, Sales_item &s) {
    double price;
    in >> s.bookNo >> s.unit_sold >> price;
    if (in) {
        s.revenue = s.unit_sold * price;
    } else {
        s = Sales_item();
    }
    return in;
}

bool operator==(const Sales_item &lhs, const Sales_item &rhs) {
    return 
           lhs.bookNo == rhs.bookNo &&
           lhs.unit_sold == rhs.unit_sold &&
           lhs.revenue == rhs.revenue;
}

bool operator!=(const Sales_item &lhs, const Sales_item &rhs) {
    return !(lhs == rhs);
}

bool operator<(const Sales_item &lhs, const Sales_item &rhs) {
    return lhs.revenue < rhs.revenue;
}

Sales_item Sales_item::operator+=(const Sales_item &s) {
    Sales_item ret;
    ret.bookNo = bookNo;
    ret.unit_sold = unit_sold + s.unit_sold;
    ret.revenue = revenue + s.revenue;
    return ret;
}

Sales_item &Sales_item::operator=(const std::string &s) {
    Sales_item tmp(s);
    *this = tmp;
    return *this;
}

Sales_item &Sales_item::operator=(const Sales_item &s) {
    bookNo = s.bookNo;
    unit_sold = s.unit_sold;
    revenue = s.revenue;
    return *this;
}

std::string Sales_item::get_boolNo() const {
    return bookNo;
}

double Sales_item::avg_price() const {
    return revenue/unit_sold;
}

Sales_item operator+(const Sales_item &lhs, const Sales_item &rhs) {
    Sales_item ret;
    ret+=lhs;
    ret+=rhs;
    return ret;
}```

### 关于OPPO设备特定版本的信息 对于提到的`14.1-20171231_184522-UNOFFICIALL-r11`这一版本号,可以解析如下: 此版本编号遵循了一定模式,其中包含了日期、时间以及可能代表内部标记的部分。具体来说,“20171231”表明该固件编译于2017年12月31日;“184522”则指明具体的编译时间为当天下午6点45分22秒。“UNOFFICIALL”通常意味着这不是官方发布的稳定版固件,可能是测试版或是由第三方定制而成。“r11”部分很可能指的是基于R11系列机型开发的基础之上。 然而,在提供的参考资料中并没有直接提及这个确切版本的具体构建细节[^1]。一般情况下,非官方或特别定制版本不会公开详细的变更日志和技术规格文档。如果需要了解更深入的技术特性或者改动之处,建议查阅开发者论坛或者是联系相关技术支持团队获取更多信息。 针对此类未正式发布过的自定义ROM,其主要特点往往集中在优化性能表现、修复已知漏洞等方面。考虑到这是较早时期的版本(2017年底),它所依据的操作系统内核及相关组件也应与此时期相匹配,即Android 7.x Nougat 或者 Android 8.x Oreo 的早期形态[^2]。 ```bash # 假设要查看某个安卓系统的版本信息 adb shell getprop ro.build.version.release ``` 上述命令可用于连接至支持ADB调试协议的手机终端来读取当前安装操作系统的大致发行代号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值