我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++头文件有哪些规则

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++头文件有哪些规则

C++头文件有哪些规则,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

C++中的C++头文件是用户应用程序和函数库之间的桥梁和纽带,在整个软件中,头文件不是最重要的部分,但它是C++语言家族中不可缺少的组成部分,有了它给技术人员提供了大大的便捷。

因为一个头文件的内容实际上是会被引 入到多个不同的.cpp文件中的,并且它们都会被编译。放声明当然没事,如果放了定义,那么也就相当于在多个文件中出现了对于一个符号(变量或函数)的定 义,纵然这些定义都是相同的,但对于编译器来说,这样做不合法。

所以,应该记住的一点就是,.h头文件中,只能存在变量或者函数的声明, 而不要放定义。即,只能在C++头文件中写形如:extern int a;和void f();的句子。这些才是声明。如果写上int a;或者void f() {}这样的句子,那么一旦这个头文件被两个或两个以上的.cpp文件包含的话,编译器会立马报错。(关于extern,前面有讨论过,这里不再讨论定义跟 声明的区别了。)

但是,这个规则是有三个例外的。

一,头文件中可以写const对象的定义。因为全局的const对象默 认是没有extern的声明的,所以它只在当前文件中有效。把这样的对象写进头文件中,即使它被包含到其他多个.cpp文件中,这个对象也都只在包含它的 那个文件中有效,对其他文件来说是不可见的,所以便不会导致多重定义。同时,因为这些.cpp文件中的该对象都是从一个头文件中包含进去的,这样也就保证 了这些.cpp文件中的这个const对象的值是相同的,可谓一举两得。同理,static对象的定义也可以放进C++头文件。

二,C++头文件中可 以写内联函数(inline)的定义。因为inline函数是需要编译器在遇到它的地方根据它的定义把它内联展开的,而并非是普通函数那样可以先声明再链 接的(内联函数不会链接),所以编译器就需要在编译时看到内联函数的完整定义才行。

如果内联函数像普通函数一样只能定义一次的话,这事儿就难办了。因为在 一个文件中还好,我可以把内联函数的定义写在最开始,这样可以保证后面使用的时候都可以见到定义;但是,如果我在其他的文件中还使用到了这个函数那怎么办呢?

这几乎没什么太好的解决办法,因此C++规定,内联函数可以在程序中定义多次,只要内联函数在一个.cpp文件中只出现一次,并且在所有的.cpp文 件中,这个内联函数的定义是一样的,就能通过编译。那么显然,把内联函数的定义放进一个头文件中是非常明智的做法。

三,头文件中可以写类 (class)的定义。因为在程序中创建一个类的对象时,编译器只有在这个类的定义完全可见的情况下,才能知道这个类的对象应该如何布局,所以,关于类的 定义的要求,跟内联函数是基本一样的。

所以把类的定义放进C++头文件,在使用到这个类的.cpp文件中去包含这个C++头文件,是一个很好的做法。在这里,值得一提 的是,类的定义中包含着数据成员和函数成员。

数据成员是要等到具体的对象被创建时才会被定义(分配空间),但函数成员却是需要在一开始就被定义的,这也就 是我们通常所说的类的实现。一般,我们的做法是,把类的定义放在头文件中,而把函数成员的实现代码放在一个.cpp文件中。这是可以的,也是很好的办法。

不过,还有另一种办法。那就是直接把函数成员的实现代码也写进类定义里面。在C++的类中,如果函数成员在类的定义体中被定义,那么编译器会视这个函数为 内联的。因此,把函数成员的定义写进类定义体,一起放进头文件中,是合法的。

注意一下,如果把函数成员的定义写在类定义的C++头文件中,而没有写进类定义中, 这是不合法的,因为这个函数成员此时就不是内联的了。一旦头文件被两个或两个以上的.cpp文件包含,这个函数成员就被重定义了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++头文件有哪些规则

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++头文件有哪些规则

C++头文件有哪些规则,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++中的C++头文件是用户应用程序和函数库之间的桥梁和纽带,在整个软件中,头文件不是最重要
2023-06-17

C#事件标准命名规则有哪些

这篇“C#事件标准命名规则有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#事件标准命名规则有哪些”文章吧。C#事件标
2023-07-05

c++最基础的规则有哪些

本篇内容介绍了“c++最基础的规则有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 所有C++程序都必须有一个main()函数,它是
2023-06-17

c语言文件命名规范有哪些

C语言文件命名规范有以下几种常见方式:1. 小写字母命名法:文件名全部使用小写字母,单词之间用下划线 "_" 分隔。例如:my_file.c2. 驼峰命名法:文件名首字母小写,每个单词的首字母大写,无分隔符。例如:myFile.c3. 大驼
2023-08-16

c语言变量命名规则有哪些

C语言的变量命名规则包括以下几点:1. 变量名可以由字母、数字和下划线组成。2. 变量名必须以字母或下划线开头。3. 变量名不能使用关键字作为标识符,如if、for、while等。4. 变量名区分大小写,例如"num"和"Num"是不同的变
2023-08-30

C++中标识符命名规则有哪些

这篇文章给大家介绍C++中标识符命名规则有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。命名规则比较著名的命名规则当推Microsoft公司的“匈牙利”法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们
2023-06-17

c语言取模运算规则有哪些

C语言中的取模运算(%)遵循以下规则:1. 如果两个操作数中有一个或两个都为负数,结果的符号与被除数相同。例如:-5 % 2 的结果为 -1。2. 如果两个操作数中有一个或两个都为正数,结果的符号与被除数相同。例如:5 % 2 的结果为 1
2023-09-14

C#正则表达式语法的相关规则有哪些

这篇文章主要介绍“C#正则表达式语法的相关规则有哪些”,在日常操作中,相信很多人在C#正则表达式语法的相关规则有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#正则表达式语法的相关规则有哪些”的疑惑有所
2023-06-17

c语言常量定义的规则有哪些

整数常量:整数常量可以是十进制、八进制、十六进制或二进制格式的数字,例如10、012、0x1A、0b1010等。浮点常量:浮点常量包括带有小数点的数字,例如3.14、-0.23等。字符常量:字符常量用单引号括起来,例如’A’、‘b’、'1’
c语言常量定义的规则有哪些
2024-03-07

C++ 友元函数的声明规则有哪些?

友元函数声明规则如下:声明必须位于类的外部。可以声明为成员函数或全局函数。可通过指针或引用传递类的对象。C++ 友元函数的声明规则友元函数声明友元函数是一种特殊的函数,可以访问类的私有成员。要在 C++ 中声明友元函数,使用 frien
C++ 友元函数的声明规则有哪些?
2024-04-16

Java编程规则有哪些

本篇内容介绍了“Java编程规则有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  (1) 类名首字母应该大写。字段、方法以及对象(句柄
2023-06-03

JAVA语法规则有哪些

今天小编给大家分享一下JAVA语法规则有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。//多态 定义:是指一个多态引用可
2023-06-03

hdb3编码规则有哪些

这篇文章主要为大家展示了“hdb3编码规则有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hdb3编码规则有哪些”这篇文章吧。编码规则是:1、连0个数不超过3,规则与AMI相同;2、若连0个
2023-06-20

c语言标识符命名规则有哪些

C语言的标识符命名规则如下:1. 标识符由字母、数字和下划线组成。2. 标识符必须以字母或下划线开头。3. 标识符区分大小写,即大写字母和小写字母是不同的。4. 标识符长度没有限制,但一般建议不要超过31个字符。5. C语言的关键字不能作为
2023-09-21

c语言指数的表示规则有哪些

在C语言中,指数的表示规则有以下几种:1. 指数表示为一个以字母e或E结尾的数字字符串,例如1e3表示10的3次方,即1000。2. 指数可以是正数、负数或零。正数表示大于1的指数,负数表示小于1的指数,零表示指数为1。3. 指数可以是整数
2023-09-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录