类声明和成员函数定义的分离
如果一个类只被一个程序使用,那么类的声明和成员函数的定义可以直接写在程序的开头。但是,如果一个类被多个程序使用,这样做的重复工作量就很大了,效率就太低了。在面向对象的程序开发中,一般做法就是将类的声明(其中包含成员函数的声明)放在指定的头.h文件中,用户如果想用该类,只要把有关的.h头文件包含进来即可,不必在程序中重复书写类的声明,提高编程的效率。
在.h头文件中对类进行声明。那么,对类函数的定义,可以放在源文件中。C++中的源文件是以.cpp为后缀的文件。例如 test.cpp这样的文件名。
所以,对类成员函数的定义一般不放在头文件中,而放在源文件中。例如,可以分别写这两个文件:
(1) 定义头文件
//student.h --- 这是头文件,在此文件中进行类的声明
(2) 定义源文件
//student.cpp --- 在此文件中进行函数的定义
(3) 调用类的源文件
//main.cpp --- 主函数模块
这是一个包含3个文件的程序,组成两个文件模块:一个是主模块main.cpp,一个是student.cpp。在主模块中又包含头文件student.h。
请注意:由于将头文件 student.h放在用户当前目录中,因此,在文件名两侧用双撇号包起来(”student.h”),如果使用尖括号包含头文件,编译器会认为student.h头文件系统定义的头文件,就到系统的目录下查找该文件。编译时会找不到此文件。
编译运行程序如下:
可以看到,通过g++编辑器,编译student.cpp、main.cpp文件。得到目标文件out程序。然后,执行out程序。
注意:C++规定,在包含头文件的时候,使用尖括号< >包含的是系统定义的头文件,使用双引号“”,则包含的是用户自己定义的头文件。
在执行主函数时调用stud中的print()函数,输出各个成员变量的值。
总结
本章节我们学习了C++类对象的定义和使用。C++类定义对象,可以通过3种方式访问对象的成员,如下:
- 对象是普通变量,通过成员运算符“点号”;
- 对象是指针类型,通过指针运算符,以指针的方式访问成员;
- 对象是引用类型,通过成员运算符“点号”;
在定义C++类的时候,我们需要考虑信息的封装和隐藏,所以,可以把C++类的声明和成员函数的定义分离,定义在不同的.h头文件和.cpp源文件中。这样合理的地规划C++类的代码分离,可以有效地管理C++的代码。
读者要仔细分析,掌握好每一个知识点,然后,自己总结出对该知识点的理解。自己总结出来的知识,理解才深刻,才是自己掌握的知识。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip