C++ Primer 5th - 1.5 类

在解决书店问题之前我们需要了解的最后一个特征是如何去定义一个好的数据结构来表达我们的数据。C++中,我们定义我们自己的数据可以使用class关键字,来定义一个类来封装我们的数据。通常来说将若干个相关的数据和操作数据的方法契合在一起的结构可以称之为类。类机制在C++里是最为重要的一个机制之一。事实上,设计C++类的最原始的一个目的是为了使类的行为就和内建类型的行为一样。

在这一节里,我们会描述一个用来解决我们的书店问题的最简单的一个类。关于类的实现我们会在后面的章节。想要使用一个类我们需要知道以下这三点:
    1.类的名字叫什么?
    2.类的定义在哪里?
    3.它支持哪些操作?
关于我们的书店问题,我们假设类的名字叫Sales_item并且它已经在Sales_item.h中进行了声明。

1.5.1 Sales_item

定义Sales_item这个类的目的是用来描述书店里这本的总利润,这本书卖出去了多少本以及这本书的平均售价。我们并不关心这些数据是怎么存储和计算的,当我们使用一个类的时候不需要知道它内部是如何实现的,我们只需要知道这个类提供了什么样的操作。

每当我们用类名来定义一个类型的时候,类型的名字和类名相同的。所以我们用Sales_item类定义的类型的名字也叫Sales_item。就像使用内建类型一样,我们也可以定义一个这个类类型的变量,如:
    Sales_item item;
我们将item称之为Sales_item的一个对象。并且我们可以定义一个变量来做这些事情:
    1.可以调用一个叫isbn的函数绑定一个Sales_item的对象。
    2.可以使用>>和<<操作符来对Sales_item的对象进行读写操作。
    3.可以使用=操作符将一个Sales_item的对象的数据赋值给另一个Sales_item的对象。
    4.可以使用+操作符对两个Sales_item的对象做加法操作。(PS:这两个对象的isbn必须是一致的。)返回的结果是个新的Sales_item的对象,并且它的isbn与两个操作数的isbn一致。
    5.可以使用+=操作符将一个Sales_item的对象加到另一个Sales_item对象中去。

现在我们知道了Sales_item提供的操作,比如我们想要从标准输入读取数据并存入到Sales_item的对象中并将Sales_item的数据输出到标准输出中,我们可以这么写:
#include <iostream>
#include "Sales_item.h"
int main()
{
    Sales_item book;
    // read ISBN, number of copies sold, and sales price
    std::cin >> book;
    // write ISBN, number of copies sold, total revenue, and average price
    std::cout << book << std::endl;
return 0;
}

1.5.2 成员函数初看

加入我们的程序里将两个Sales_item相加时需要检查两个Sales_item的ISBN是否相同。我们可以这么写:
#include <iostream>
#include "Sales_item.h"
int main()
{
    Sales_item item1, item2;
    std::cin >> item1 >> item2;
    // first check that item1 and item2 represent the same book
    if (item1.isbn() == item2.isbn()) 
    {
        std::cout << item1 + item2 << std::endl;
        return 0; // indicate success
    } 
    else 
    {
        std::cerr << "Data must refer to same ISBN"
        << std::endl;
        return -1; // indicate failure
    }
}
和之前的程序的不同之处是它的if else分支。即使没有明白if条件的意思,也不要方,程序是可以正常跑的。如果if判断为真,则输出与之前的书店程序的输出一样。如果if判断为假,我们将打印出错误信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值