《c++语言导学》——2.2 结构

本节书摘来自华章计算机《c++语言导学》一书中的第2章,第2.2节,[美] 本贾尼·斯特劳斯特卢普 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 结构

构建新类型的第一步通常是把所需的元素组织成一种数据结构。下面是一个struct的示例:


《c++语言导学》——2.2 结构

这是Vector的第一个版本,其中包含一个int和一个double*。
Vector类型的变量可以通过下述形式进行定义:

《c++语言导学》——2.2 结构

仅就v本身而言,它的用处似乎不大,因为v的elem指针并没有指向任何实际的内容。为了让它变得更有用,我们需要令v指向某些元素。例如,我们可以构造一个如下所示的Vector:

《c++语言导学》——2.2 结构

也就是说,v的elem成员被赋予了一个由new运算符生成的指针,而sz成员的值则是元素的个数。Vector&中的符号&指定我们通过非const引用(见1.8节)的方式传递v,这样vector_init()就能修改传入其中的向量了。
new运算符从一块名为*存储(free store)(又称为动态内存(dynamic memory)或堆(heap))的区域中分配内存。分配在*存储中的对象独立于它所处的作用域,它会一直“存活”到使用delete运算符(见4.2.2节)销毁它为止。
Vector的一个简单应用如下所示:

《c++语言导学》——2.2 结构

显然,在优雅程度和灵活性上我们的Vector与标准库vector还有很大差距,尤其是Vector的使用者必须清楚地知道它的所有细节。本章余下部分以及接下来的两章将把Vector当作呈现语言特性和技术的一个示例,一步步地完善它。作为对比,第9章介绍标准库vector,在其中蕴含着很多漂亮的改进。
本书使用vector和其他标准库组件作为示例是为了达到以下两个目的:
  • 展现语言特性和程序设计技术;
  • 帮助读者学会使用这些标准库组件。

不要想着重写vector和string等标准库组件,直接使用它们更为明智。
访问struct的成员有两种方式:一种是通过名字或引用,这时我们使用.(点运算符);另一种是通过指针,这时用到的是->。例如:


《c++语言导学》——2.2 结构https://yqfile.alicdn.com/f88dffd31f527e933ad3c1d6aaccbf32f401d53a.png
" >
上一篇:android - 自定义(组合)控件 + 自定义控件外观


下一篇:强化管理远程分支机构利器之coreRODC[为企业部署Windows Server 2008系列九]