c++语言程序设计——头文件和引用系统头文件、用户头文件的定义及使用方法

简介: c++语言程序设计——头文件和引用系统头文件、用户头文件的定义及使用方法

头文件


头文件是拓展名为.h的文件,其包含了函数的声明和宏定义,它可以被多个源文件引用共享。头文件分为两种类型:编译器自带的系统头文件和程序员即用户编写的头文件。


引用头文件


1、引用系统头文件

编译器自带的系统头文件即#include<iostream>、#include<cmath> 等等这些由#include后面加上< 文件名 >所带的头文件,当我们在程序中要使用该头文件时,需要使用预处理指令#include来引用它,例如引用系统头文件file:


#include<file>      //在系统目录的标准列表中搜索文件名为flie的文件
...


2、引用用户头文件


用户头文件即我们自己定义的头文件,需要我们自己编写该头文件,编写好后在源文件当中就可以引用它来使用,当然当我们在程序中要使用该头文件时,也需要使用预处理指令#include来引用它,引用它即在#include后面加上" 文件名 .h",例如引用用户头文件file:

#include"file.h"      //在包含当前文件的目录搜索文件名为file的文件
...


实例


接下来,使用Visual Studio 2019来看一个例子,看具体定义和使用头文件的实例。


例、设计一个基类Shapes,包含成员函数display()并声明为纯虚函数。Shapes类公有派生产生矩形类Rectangle和圆类Circle,分别定义display()函数实现其主要几何元素的显示。使用抽象类Shapes类型的指针(或引用),当它指向(或引用)某个派生类的对象时,就可以通过它访问该对象的虚成员函数display()实现动态多态性。


1、首先我们新建一个项目,打开后,在视图中调出解决方案管理器:

1666891291293.jpg

2、这里我们通过题目要求,我们是要定义类,并派生类等等,这时我们点击左侧的解决方案管理器创建一个头文件名为"headfile",即右键头文件,选择添加新建项,并选择头文件(.h),设置好名称后我们点击添加,即完成用户头文件定义的创建:

1666891302640.jpg

3、接下来,我们这里就开始编程:

emmm编程…

1666891324558.jpg


然后检查代码无误后,点击左上角文件——保存heafile.h,即完成了用户头文件的编写和保存。


4、接下来,我们要编写main()主函数来实现题目要求,利用display()等函数实现其主要几何元素的显示。

5、在左侧的解决方案管理器中,新建一个源文件,然后这里是选择C++文件(.cpp)新建。

1666891334610.jpg

6、编写主函数,注意这里的#include要包含我们刚刚创建的头文件headfile,即#include"headfile.h",不要漏掉了.h。

1666891347365.jpg

7、运行无误,正确!

1666891364473.jpg


注意


刚刚更新,发现有错误,具体错误看下图:

1666891398157.jpg

也就是我们在一个项目工程例添加了多个包含main()主函数的源文件,造成出现“C:\Users\myj\Desktop\实验5\实验5\Debug\实验5.exe : fatal error LNK1169: 找到一个或多个多重定义的符号”的错误,其实这种情况我们只需将不需要运行的那个源文件双击右键属性,在属性页中将从生成中排除改为是,这样就运行另一个源文件,即将其禁用排除。

1666891407652.jpg

排除后,我们发现源1图标发生改变,即被排除:

1666891420214.jpg

若有多个要排除的源文件,即按住ctrl键选中多个后右键属性排除。


结语


使用用户定义头文件可以使代码更加简洁和更方便查出错误,可以避免创建了多个源文件时,运行源文件会有报错情况。

以上就是头文件及引用系统头文件、用户头文件的使用方法的内容,感谢您的阅读和支持,篇幅较长,若有表述以及代码中的不当之处,望指出!您的指出和建议能给作者带来很大的动力!!!

相关文章
|
8天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
28 4
|
21天前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
1月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
34 5
|
1月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
29 2
|
1月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
53 1
|
1月前
|
存储 编译器 C语言
深入计算机语言之C++:类与对象(上)
深入计算机语言之C++:类与对象(上)
|
1月前
|
存储 分布式计算 编译器
深入计算机语言之C++:C到C++的过度-2
深入计算机语言之C++:C到C++的过度-2
|
1月前
|
编译器 Linux C语言
深入计算机语言之C++:C到C++的过度-1
深入计算机语言之C++:C到C++的过度-1
|
2月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
7天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
33 4