- 0
- 0
- 约1.04万字
- 约 15页
- 2017-07-29 发布于湖北
- 举报
我们已经从1.5节了解到,一般类定义都会放入头文件(header file)。在本节中我们将看到怎样为Sales_item类定义头文件。
事实上,C++程序使用头文件包含的不仅仅是类定义。回想一下,名字在使用前必须先声明或定义。到目前为止,我们编写的程序是把代码放到一个文件里来处理这个要求。只要每个实体位于使用它的代码之前,这个策略就有效。但是,很少有程序简单到可以放置在一个文件中。由多个文件组成的程序需要一种方法连接名字的使用和声明,在C++中这是通过头文件实现的。
为了允许把程序分成独立的逻辑块,C++支持所谓的分离编译(separate compilation)。这使得可由多个文件组建程序。为了支持分离编译,我们把Sales_item的定义放在一个头文件里面。我们后面在7.7节中定义的Sales_item成员函数将放在单独的源文件中。像main这样使用Sales_item对象的函数放在其他的源文件中,任何使用Sales_item的源文件都必须包含Sales_item.h头文件。
2.9.1? 设计自己的头文件
头文件为相关声明提供了集中场所。头文件一般包含类的定义、extern变量的声明和函数的声明。函数的声明将在7.4节介绍。使用或定义这些实体的文件要包含适当的头文件。
头文件的正确使用能够带来两个好处:保证所有文件使用给定实体的同一声明;当声明需要修改时,只有头文件需要更新。
设计头文件还须注意以下几点:头文件中的声明在逻辑上应该是统一的。编译头文件需要一定的时间。如果头文件太大,程序员可能不愿意承受包含该头文件所带来的编译时代价。
?
为了减少处理头文件的编译时间,有些C++的实现支持预编译头文件。欲进一步了解详细情况,请参考你的c++实现的手册。
编译和链接多个源文件?????????????????????????????????????????????????????????????????????
要产生可执行文件,我们不但要告诉编译器到哪里去查找main函数,而且还要告诉编译器到哪里去查找Sales_item类所定义的成员函数的定义。假设我们有两个文件:main.cc含有main函数的定义,Sales_item.cc含有Sales_item的成员函数。我们可以按以下方式编译这两个文件:
$ CC -c main.cc Sales_item.cc # by default generates a.exe
????????????????????????????????? ??# some compilers generate a.out
?
???? # puts the executable in main.exe
???? $ CC -c main.cc Sales_item.cc -o main
其中$是我们的系统提示符,#开始命令行注释。现在我们可以运行可执行文件,它将运行我们的main程序。
如果我们只是修改了一个.cc源文件,较有效的方法是只重新编译修改过的文件。大多数编译器都提供了分离编译每一个文件的方法。通常这个过程产生.o文件,.o扩展名暗示该文件含有目标代码。
编译器允许我们把目标文件链接在一起以形成可执行文件。我们所使用的系统可以通过命令名CC调用编译。因此可以按以下方式编译程序:
$ CC -c main.cc?????????? ? # generates main.o
$ CC -c Sales_item.cc??? ? # generates Sales_item.o
$ CC main.o Sales_item.o?? # by default generates a.exe;
???????????????????????????? ? # some compilers generate a.out
?
# puts the executable in main.exe
$ CC main.o Sales_item.o -o main
你将需要检查你的编译器的用户手册,了解如何编译和执行由多个源文件组成的程序。
??
?
许多编译器提供了增强其错误检测能力的可选功能。检视你的编译器的用户指???????????? 南,看有哪些额外的检测方法。
1. 头文件用于声明而不是用于定义
当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明则可以出现多次(2.3.5节)。下列语句是一些定义,所以不应该放在头文件里:
extern int ival = 10;???? // initializer, so its a definition
double fica_rate;???? ?????? // no extern, so its a definitio
您可能关注的文档
最近下载
- (新编)农村集体经济组织换届选举操作实务与示范文本资料汇编.doc VIP
- TACEF030-2022 城镇排水系统 厂、站、网一体化运行监测与智能化管理技术规程.pdf VIP
- 《中国前庭性偏头痛诊治指南(2026)》解读PPT课件.pptx VIP
- 2026年全年党建工作计划.docx VIP
- 《临床医学传染病学》课件鼠疫.ppt VIP
- 2022-2023学年高二期末质量检测.docx VIP
- APQP 先期产品质量策划(第三版)2024 中英文(高清可复制).doc VIP
- 特殊作业管理疑难问题解析-“化危为安”线上讲堂第133期-冯建柱-2025.7.18(原版).pptx
- 2025年山东化工职业学院高职单招(综合素质)备考题库及答案解析.docx VIP
- AD200 classics系列驱动器使用手册V1.1.pdf VIP
原创力文档

文档评论(0)