【项目3 - 程序的多文件组织】
一、多文件组织的必要
当程序规模变大后,一个程序用多个文件组织,便于组织生产。这样,不必每次都重复对所有代码进行编译,而只需编译一次即可。把编译后所形成的目标文件保存起来,以后在需要时把它调出来直接与程序的目标文件相连接即可。
C++中一种常用的做法是,独立出一个头文件(.h)来。正确使用头文件带来的好处包括:
支持代码的局部单独编译,尤其对类及成员函数声明;保证所有文件使用给定实体的同一声明;当声明需要修改时,只有头文件需要更新。 使用头文件的时候,头文件只用于声明,而不是定义,头文件一般含有支持分别编译所需的类定义及变量和函数的声明。
头文件中声明过的类、函数,在另外一个源程序文件(.cpp)中实现。
类的成员函数定义在头文件中只有一个例外,那就是内置(inline)成员函数需要定义在头文件中。
另外,一些const对象要定义在头文件中。
二、Code::Blocks中多文件项目的建立
1、先建立项目(Project)
建好的项目只有一个源文件。在这个文件中,包含有main()函数。
2、维护项目中的各种文件
在菜单中选择File - New - File...,出现如图1所示的窗口,可以加入头文件(header),也可以加入源文件(source)。

图1 新建文件 <??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cD48YnIgLz48L3A+PHA+oaGhobC0z/K1vLXE1rjKvr2owaLOxLz+o6zNvDLP1Mq+tcTKx9PQwb249tS0zsS8/qGi0ru49s23zsS8/rXEz+7Ev73hubmhozwvcD48cD48L3A+PHA+oaGhoTxpbWcgc3JjPQ=="https://www.cppentry.com/upload_files/article/49/1_02dq3__.jpg" alt="\" />
图2 多文件的项目结构
头文件中做声明,源文件中做定义。在需要的位置,如:#include "Triangle.h"(图2中)。include后用引号,优先在当前文件夹下找包含的文件,而用 <> 符号,是要到系统包含文件夹中找包含文件。
用鼠标右击项目名,有Add files...和Remove files...等菜单选项,可以完成多文件项目的组织。
三、项目3的实践内容
利用多文件组织,重新实现项目2。其中,整个项目包括3个文件:
主文件: main.cpp,用于定义main()函数头文件: triangle.h,头文件,声明类,定义内置成员函数类定义文件: triangle.cpp,用于定义类Triangle中其他成员函数 注意,将3个set函数和3个get函数设计成内置成员函数,其他函数不作为内置函数。
【项目4 - 数组作数据成员】阅读教材P255例8.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中的数据成员如下类的声明。
class Salary
{
public:
void set_salarys( ); //(1)
void add_salarys(int x); //(2)
void sort_salarys(); //(3)
void show_salarys( ); //(4)
private:
double salarys[50]; //工资
int number; //实际人数
}; 请设计成员函数实现下面的功能:
(1)输入职工工资,工资保存到salary数组中,实际人数保存到number[]中(输入-1标志着工资输入结束);
(2)给每个人涨500元工资(add_salarys是有参函数,在调用时,500当实参);
(3)对涨后的工资进行排序;
(4)输出排序后的工资。
(5)在main函数定义Salary类的对象,调用你自己设计好的成员函数,完成相关的工作。
【项目4扩展1(选做)】
使用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用教材P217所讲的动态分配内存的运算符new,开辟一个大小正好的连续空间,完成上面的工作。
【项目4扩展2(选做)】 下载salary.txt文件
手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt,从文件中读数据,完成上面的工作。
【项目4扩展3(选做)】
增加一个成员函数,将排序后结果保存到一个文件中。
【项目4扩展4(选做)】将项目4用多文件的方式组织起来。
 |
china-pub(正在发售) 卓越网(接受预订) 图灵社区 官方试读本下载 豆瓣 |
==================== 迂者 贺利坚 CSDN博客专栏================= |== IT学子成长指导专栏 专栏文章分类目录(不定期更新) ==| |== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==| ======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 ======= |