zoukankan      html  css  js  c++  java
  • Exercice_7.31-练习创建类的成员函数

    这里我要创造一个Sales_item类,用来保存销售记录,要求有以下几个字段:

    1.isbn 商品的ISBN号

    2.units_sold 销量

    3.revenue 总价

    接下来我们需要以下几个函数:

    1.avg_price() 计算单价

    2.same_isbn() 用来判断两个商品是否有相同的isbn

    3.input() 输入销售信息

    4.output() 打印销售信息

    确定了这些以后,我们这样来组织类的代码文件:

    1.将对类的声明放在头文件 Sales_item.h中

    2.将对类成员函数的定义放在源文件 Sales_item.cpp中

    3.将主函数放在 main.cpp中

    我们先来看一下代码,稍后来解释:

    Sales_item.h


    //自定义类Sales_item类的头文件
    #ifndef SALES_ITEM_H_INCLUDED
    #define SALES_ITEM_H_INCLUDED
    #include <iostream>
    #include <string>   //头文件中同样需要引入STL以及声明命名空间
    using namespace std;
    
    //定义一个Sales_item类
    class Sales_item{
    public:
        //定义操作
        double avg_price() const;   //const代表不能修改调用该函数的对象
        bool same_isbn(const Sales_item &rhs) const
        {
            return isbn == rhs.isbn;
        }
    
        istream& input(istream& in);
        ostream&  output(ostream& out) const;
        //构造函数
        Sales_item(): units_sold(0), revenue(0.0) {};
    
        //私有成员
    private:
        std::string isbn;
        unsigned units_sold;
        double revenue;
    };
    #endif // SALES_ITEM_H_INCLUDED
    
    解释一下,成员函数末尾加const表示常量成员函数,即 不能通过该函数改变调用该函数的对象。&代表引用,返回对象的地址。构造函数:与{}之间的部分成为 函数的初始化列表。

    然后是Sales_item.cpp

    #include <Sales_item.h>
    
    using namespace std;
    
    //在类外定义成员函数
    double Sales_item::avg_price() const
    {
        if (units_sold)
            return revenue/units_sold;
        else
            return 0;
    }
    
    //输入一组交易
    istream& Sales_item::input (istream& in)
    {
        double price;
        in >> isbn >> units_sold >> price;
        if (in)
            revenue = units_sold * price;
        else
        {
            units_sold = 0;
            revenue = 0;
        }
        return in;
    
    }
    	
    
    //输出一组交易
    ostream& Sales_item::output(ostream& out) const
    {
        out << isbn << '	' << units_sold << '	' << revenue << '	' << avg_price();
        return out;
    }
        这里的in可以是cin标准输入流,也可以是其他istream类型的输入流,这里的input()函数提示用户输入商品号,单价,和数量,而算出总价。

    最后是main.cpp


    #include <iostream>
    #include <string>
    #include <Sales_item.h>
    using namespace std;
    
    int main()
    {
        Sales_item item;
        //读入并输出一组交易
        cout << "Enter some transactions(Ctrl+z to end):" << endl;
        while (item.input(cin))
        {
            cout << "The transaction is : " << endl;
            item.output(cout);
            cout << endl;
        }
        return 0;
    }
    





  • 相关阅读:
    一致性哈希算法
    Discourse 的标签(Tag)只能是小写的原因
    JIRA 链接 bitbucket 提示错误 Invalid OAuth credentials
    JIRA 如何连接到云平台的 bitbucket
    Apache Druid 能够支持即席查询
    如何在 Discourse 中配置使用 GitHub 登录和创建用户
    Apache Druid 是什么
    Xshell 如何导入 PuTTYgen 生成的 key
    windows下配置Nginx支持php
    laravel连接数据库提示mysql_connect() :Connection refused...
  • 原文地址:https://www.cnblogs.com/mrbourne/p/9959467.html
Copyright © 2011-2022 走看看