《C++ primer》第五版学习笔记--第七章 类

本文是《C++ Primer》第五版的学习笔记,重点探讨了如何利用C++进行数据抽象,包括定义抽象数据类型、成员函数、常量成员函数的实现,以及在类外部定义成员函数的方法。文中详细阐述了类的接口与实现分离,以及封装的概念,同时还介绍了如何定义返回this对象的函数和与类相关的非成员函数。
摘要由CSDN通过智能技术生成

《C++ primer》比其他C++相关书籍,知识点细致很多很多,每次看书都会有新的理解~


类的基本思想: 数据抽象和封装

数据抽象是一种依赖于接口和实现分离的编程技术。

类的接口包括用户所能执行的操作;

类的实现包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。

封装实现了类的接口和实现的分离。封装后的类隐藏了它的实现细节,也就是,类的用户只能使用接口而无法访问实现部分。

类要想实现数据抽象和封装,需要首先定义一个抽象数据类型

定义抽象数据类型

先看一个书店程序,《C++ primer 》 P. 21 最原始的代码:

Sales_item total;                             //保存下一条交易记录的变量
if (std::cin >> total) {
                         //读入第一条交易记录,并确保有数据可以处理
	sales_item trans;                         //保存和的变量
	while (std::cin >> trans){
                   //读入并处理剩余交易记录
		if (total.isbn ( ) == trans.isbn())   //如果我们仍在处理相同的书
			total += trans;                   //更新总销售额
   	    else {
                                   //打印前一本书的结果
             std::cout<<total <<std: :endl;
             total = trans;                   // total现在表示下一本书的销售额
    }
}
          std::cout<<total << std: :endl;    //打印最后一本书的结果
}
    else {
                                       //没有输入任何信息
	cerr <<"No data? ! "<< endl ;             //通知用户
}

《C++ primer 》 P.64 自定义数据类型

C++11新标准规定,可以为数据成员提供一个类内初始值(in-class initializer)。创建对象时,类内初始值将用于初始化数据成员。没有初始值的成员将被默认初始化。因此当定义sales_data的对象时,units_soldrevenue都将初始化为0,bookNo将初始化为空字符串。

struct Sales_data {
   
    std::string bookNo;
    unsigned units_sold = 0;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值