7.1.4

原创 2017年01月03日 22:46:46

7.11

#include <string>
#include <iostream>

class Sales_data {
public:
    Sales_data() = default;
    Sales_data(const std::string &s):bookNo(s) { }
    Sales_data(const std::string &s, unsigned n, double p):bookNo(s), units_sold(n), revenue(n*p){ }
    Sales_data(std::istream &is);

    std::string isbn() const { return bookNo; };
    Sales_data& combine(const Sales_data&);
private:
    std::string bookNo;
    unsigned units_sold = 0;
    double revenue = 0.0;
};

// nonmember functions
std::istream &read(std::istream &is, Sales_data &item)
{
    double price = 0;
    is >> item.bookNo >> item.units_sold >> price;
    item.revenue = price * item.units_sold;
    return is;
}

std::ostream &print(std::ostream &os, const Sales_data &item)
{
    os << item.isbn() << " " << item.units_sold << " " << item.revenue;
    return os;
}

Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{
    Sales_data sum = lhs;
    sum.combine(rhs);
    return sum;
}   

// member functions.
Sales_data::Sales_data(std::istream &is)
{
    read(is, *this);
}

Sales_data& Sales_data::combine(const Sales_data& rhs)
{
    units_sold += rhs.units_sold;
    revenue += rhs.revenue;
    return *this;
}

7.12

#include <string>
#include <iostream>

struct Sales_data;
std::istream &read(std::istream&, Sales_data&);

class Sales_data {
public:
    Sales_data() = default;
    Sales_data(const std::string &s):bookNo(s) { }
    Sales_data(const std::string &s, unsigned n, double p):bookNo(s), units_sold(n), revenue(n*p){ }
    Sales_data(std::istream &is) { read(is, *this); }

    std::string isbn() const { return bookNo; };
    Sales_data& combine(const Sales_data&);
private:
    std::string bookNo;
    unsigned units_sold = 0;
    double revenue = 0.0;
};

// member functions.
Sales_data& Sales_data::combine(const Sales_data& rhs)
{
    units_sold += rhs.units_sold;
    revenue += rhs.revenue;
    return *this;
}

// nonmember functions
std::istream &read(std::istream &is, Sales_data &item)
{
    double price = 0;
    is >> item.bookNo >> item.units_sold >> price;
    item.revenue = price * item.units_sold;
    return is;
}

std::ostream &print(std::ostream &os, const Sales_data &item)
{
    os << item.isbn() << " " << item.units_sold << " " << item.revenue;
    return os;
}

Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{
    Sales_data sum = lhs;
    sum.combine(rhs);
    return sum;
}

7.13

int main()
{
    Sales_data total(std::cin);
    if (!total.isbn().empty())
    {
        std::istream &is = std::cin;
        while (is) {
            Sales_data trans(is);
            if (total.isbn() == trans.isbn())
                total.combine(trans);
            else {
                print(std::cout, total) << std::endl;
                total = trans;
            }
        }
        print(std::cout, total) << std::endl;
    }
    else
    {
        std::cerr << "No data?!" << std::endl;
        return -1;
    }

    return 0;
}

7.14

Sales_data() : units_sold(0) , revenue(0){ }

7.15

#include <string>
#include <iostream>



class Person {
public:
    Person() = default;
    Person(const std::string sname, const std::string saddr):name(sname), address(saddr){ }
    Person(std::istream &is){ read(is, *this); }

    std::string getName() const { return name; }
    std::string getAddress() const { return address; }
 private:
    std::string name;
    std::string address;
};

std::istream &read(std::istream &is, Person &person)
{
    is >> person.name >> person.address;
    return is;
}

std::ostream &print(std::ostream &os, const Person &person)
{
    os << person.name << " " << person.address;
    return os;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

C++Primer第五版 7.1.4节练习

练习7.11:在你的Sales_data类中添加构造函数,然后编写一段程序令其用到每个构造函数。 练习7.12:把只接受一个istream作为参数的构造函数定义到类的内部。 练习7.13:使用is...
  • fengzhanghao23
  • fengzhanghao23
  • 2015年09月16日 07:17
  • 1328

Android基础入门教程——7.1.4 Android HTTP请求方式-HttpClient

在上一节中我们对HttpURLConnection进行了学习,本节到第二种方式:HttpClient,尽管被Google 弃用了,但是我们我们平时也可以拿HttpClient来抓下包,配合Jsoup...
  • zpj779878443
  • zpj779878443
  • 2015年09月08日 10:21
  • 2502

虚拟机VMware Workstation 7.1.4官方原版下载+激活密钥+汉化补丁

由于工作学习的需要,如学习linux,或在专门的系统下测试一些东西而不破坏主系统, 我们需要使用不同的操作系统,虚拟机软 件能帮助我们很好的实现这一点,说到虚拟机,首先想到的一定是功能强大的VMW...
  • glen1943
  • glen1943
  • 2014年01月16日 11:09
  • 1681

编译php7.1.4出现 undefined reference to isfinite

我在 CentOS5.5 上编译 php7.1.4 出现错误: ext/standard/.libs/var.o: In function `php_var_export_ex': /PHP/32/s...
  • letshi
  • letshi
  • 2017年05月04日 11:32
  • 1077

VMware-workstation-full-7.1.4 + Fedora-11-i386-DVD.iso ---LINUX虚拟机安装配置详解

一、首先百度谷歌一下下载VMware-workstation和linux系统的镜像.iso文件 1、这里我使用的是VMware-workstation-full-7.1.4,而不是网上常见比较经典的...
  • chutianya
  • chutianya
  • 2012年11月26日 23:50
  • 1389

[Fedora--VMware]虚拟机VMware7.1.4中安装Fedora15-FriendlyARM

问题描述:打算使用Fedora对一个开发板源码进行修改和编译,电脑已经装过虚拟机了,于是试着装个Fedora15,现将尝试过程做下记录。     文件下载:在百度云上下载了个Fedora15的压缩包,...
  • suxiang198
  • suxiang198
  • 2015年07月11日 00:23
  • 601

Installing VMware 7.1.4 and Debian 6.0

Installing VMware After unzip it,you will see a name for the “VMware-workstation-7.1.3.exe"file. Ru...
  • wwv386646959
  • wwv386646959
  • 2013年03月31日 13:38
  • 849

(hdu step 7.1.4)Surround the Trees(求凸包的周长——计算将所有点都包围起来的最小凸多边形的周长)

题意:Surround the TreesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others...
  • caihongshijie6
  • caihongshijie6
  • 2015年03月17日 15:22
  • 1004

VMware7.1.4 + Centos6.5 + QT5.2.1 for android 开发环境配置

VMware7.1.4 + Centos6.5 + QT5.2.1 for android 开发环境配置 经过了5天的摸趴滚打,总算是把环境搭建好了,并在手机上面正常跑起来。 (下一步,安...
  • ytJansbon
  • ytJansbon
  • 2014年04月04日 17:25
  • 943

nginx1.12.0+php-fpm+php7.1.4+jemalloc4.5.0+redis3.2.8+rsyslog

主服务器IP:192.168.1.104 先配置主服务器的rsyslog: # vim /etc/rsyslog.conf $ModLoad imuxsock $SystemLogRateLimit...
  • chen791107
  • chen791107
  • 2017年04月26日 12:12
  • 537
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:7.1.4
举报原因:
原因补充:

(最多只允许输入30个字)