12.2 队列模拟

// done if self-assignment

ostream & operator << [ostream & os. const c_name & obj)

os << ...: // display object contents

return os:

其中 c_name 是类名。如果该类提供了能够返回所需内容的公有方法,则可在操作符函数中使用这些

方法,这样便不用将它们设置为友元函数了。

  1. 特换函数

要将单个值转换为类类型,需要创建原型如下所示的类构造函数:

c_name (type_name value) :

其中e_name 为类名,type_name是要转换的类型的名称。

要将类转挨为其他类型,需要创建原型如下所示的类成员函数:

operator type_name():

虽然该函数没有声明返回类型,但应返回所需类型的值。

使用转换函数时要小心。可以在声明构造函数时使用关键字explicit,以防止它被用于隐式转换。

  1. 其构造函数使用new的类

如果类使用new操作符来分配类成员指向的内存,在设计时应采取一些预防措施(前面总结了这些预

防措施,应牢记这些规则,这是因为编译器并不知道这些规则,因此无法发现错误)。

● 对于指向的内存是由 new分配的所有类成员,都应在类的析构函数中对其使用delete,该操作符

将释放分配的内存。

● 如果析构函数通过对指针类成员使用delete 来释放内存,则每个构造函数都应当使用new来初始

化指针,或将它设置为空指针。

● 构造函数中要么使用new[],要么使用new,而不能混用。如果构造函数使用的是new[],则析

构函数应使用delete[]:如果构造函数使用的是new,则析构函数应使用 delete。

● 应定义个分配内存(而不是将指针指向已有内存)的复制构造函数。这样程序能够将类对象初

始化为另一个类对象。这种构造函数的原型通常如下:

className (const className 6)

● 应定义·个重载赋值操作符的类成员函数,其函数定义如下(其中c_pointer是c_name的类成员,

类型为指向 type_name的指针)。下面的范例假设使用new[]来初始化变量c_pointer:

c_name & c_name: :operator= (const e_name & cn)

if [this ww & cn_)

return *this:

deletel | e_pointer:

// set size number of type_name units to be copied

c_pointer = new type_name[size]:

// then copy data pointed to by cn.c_pointer to

// location pointed to by e_pointer

return *this:

12.2 队列模拟

进步了解类后,可将这方面的知识用于解决编程问题。Heather银行打算在Food Heap超市开设一个

自动柜员机(ATM)。Food Heap超市的管理者担心排队等待使用ATM的人流会干扰超市的交通,希望限

制排队等待的人数。Heather银行希望对顾客排队等待的时间进行估测。要编写一个程序来模拟这种情况,

让超市的管理者可以了解ATM可能造成的影响。

相关推荐
心本无晴.几秒前
深入剖析Vue3中Axios的实战应用与最佳实践
前端·javascript·vue.js
冬男zdn1 分钟前
优雅的React表单状态管理
前端·javascript·react.js
国服第二切图仔2 分钟前
基于Electron for 鸿蒙PC的高性能表格组件封装
javascript·electron·harmonyos·鸿蒙pc
爱加糖的橙子4 分钟前
升级到dify1.10.1-fix版本后,还是有漏洞,React和Next.js的版本和官网描述不一样
前端·人工智能·react.js·阿里云
IT·小灰灰7 分钟前
Doubao-Seedream-4.5:当AI学会“版式设计思维“——设计师的七种新武器
javascript·网络·人工智能·python·深度学习·生成对抗网络·云计算
柠檬水不加冰_8 分钟前
Angular学习记录
javascript·学习·angular.js
羑悻的小杀马特11 分钟前
C++与Redis高效交互:通过optional与迭代器玩转String/List/Set......,打造高性能存储方案!
c++·redis·交互
黛色正浓12 分钟前
【React基础】篇章3:性能优化相关API&&编写类组件Class API&&zustand状态管理
javascript·react.js·ecmascript
2401_8604947015 分钟前
在React Native鸿蒙跨平台开发中实现一个桶排序算法,如何使用任何排序算法对每个桶中的元素进行排序,再将所有桶中的元素合并成一个有序数组
javascript·react native·react.js·ecmascript·排序算法·harmonyos
我爱学习_zwj17 分钟前
Node.js:从浏览器到服务器的JS革命
javascript·node