C++入门(文件结构)

1.一般情况下,一个C++程序中只包含两类文件:.cpp文件和.h文件。其中:

.cpp文件被称作C++源文件,里面放的都是C++的源代码;

.h文件则被称作C++头文件,里面放的也是C++的源代码。

2.一般在 头文件中进行函数, 变量声明, 宏声明, 结构体声明;在 源文件 中去进行变量定义, 函数实现。

3.头文件单独封装的好处:

(1)头文件是代码界面,提供类、模版、函数等一系列的声明,让程开发人员知道应该怎么调用里面的接口。

(2)头文件提供界面,使得程序员在需要加载一个库函数的时候查看头文件就知道怎么加载这个动态库内部的函数

(3)将头文件作为界面,再去定义它的实现,只要保证界面不变(头文件不变),就可以只修改源文件(接口的内部实现),不修改其他的实现代码。其他使用这个函数的地方可以完全保持不变。
(4)所有源文件都被编译器划分为单元分别进行编译。编译过程中,头文件被放入到源文件里面一起作为编译单元被编译。即源文件file.cpp里的#include "file.h"这一行,被替换成file.h里面的所有内容。(头文件中包含一些声明、宏定义等预处理操作)。

        将源文件和头文件分开,保证了头文件被多个其他文件引用(include)时,内部的数据不会被多次编译而造成错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产品经理需要掌握哪些产品专业知识?

作为产品经理,最重要的是洞察客户的需求、理解客户的需求、掌握客户的需求,所以,第一件事情就是要有清晰的战略方向,我们到底梦想是什么?要做什么?能做什么?在哪儿做?谁负责去做&…

MySQL 慢查询

1. MySQL 慢查询定位 1.1 MySQL 慢查询日志格式 --MySQL 慢查询日志格式 1)Time 日志的记录时间 2) UserHost 执行SQL的用户和主机 3) Query_time SQL执行的耗时时间 4) Lock_time 锁表的时间 5) Rows_sent SQL返回的执行记录条数 6) Rows_examined SQL语句扫描的…

Stm32_标准库_7_光敏传感器

AO端口:通俗的讲大概是根据环境亮度的不同导致电阻的阻值不同,最后AO口输出的模拟量也不同,这个端口是用来测量环境光照的具体强度 DO端口:光敏电阻默认设置了一个阈值,当光照强度高于这个阈值本端口输出低电平&#…

IDEA的database工具以及对比两个数据库之间的差异(比DBVisualizer和DBeaver方便)

背景 其实IDEA里有个非常好用的database工具,用来连数据库,能连的数据非常多,最重要的是还带有对比数据库差异的工具。 唯一有点不好就是这个是 intellij idea的ultimate edition版本才有,对于社区版本(community ed…

Linux系统及Docker安装RabbitMq

目录 一、linux系统安装 1、上传文件 2、在线安装依赖环境 3、安装Erlang 4、安装RabbitMQ 5、开启管理界面及配置 6、启动 7、删除mq 二、docker安装 1、上传mq.tar包或使用命令拉取镜像 2、启动并运行 3、访问mq 一、linux系统安装 1、上传文件 2、在线安装依赖环…

数据结构—快速排序(续)

引言:在上一篇中我们详细介绍了快速排序和改进,并给出了其中的一种实现方式-挖坑法 但其实快速排序有多种实现方式,这篇文章再来介绍其中的另外两种-左右指针法和前后指针法。有了上一篇挖坑法的启示,下面的两种实现会容易许多。 …

oracle linux8.8上安装oracle 19c集群

1、操作系统版本告警 处理办法:export CV_ASSUME_DISTIDRHEL7.6 2、ssh互信故障 查看ssh版本 [rootdb1 ~]# ssh -V OpenSSH_8.0p1, OpenSSL 1.1.1k FIPS 25 Mar 2021 处理办法-2个节点都需要操作 安装前配置 # mv /usr/bin/scp /usr/bin/scp.orig # echo "…

计划新电脑配置与预算

博主还在用E3-1225V2,整整10年前的老配置。是准备要给电脑升级一下了,想起来,好久都没去过电脑城了,估计也不会再去了,25年前博主在重庆泰兴电脑城201卖MODEL啊,时间就这样一晃过去了。计划的配置如下&…

Java中的锁与锁优化技术

文章目录 自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁重量级锁 自旋锁与自适应自旋 自旋锁是一种锁的实现机制,其核心思想是当一个线程尝试获取锁时,如果锁已经被其他线程持有,那么这个线程会在一个循环中不断地检查锁是否被释放&#xf…

Django使用SMTP发送邮件教程

CONTENTS 1. SMTP介绍2. 申请邮箱授权码3. Django发送邮件 1. SMTP介绍 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/I…

Qt之QStackedLayout

QStackedLayout 一、简介 QStackedLayout 是 Qt 框架中的一个类,用于管理多个子控件,这些子控件被维护在一个堆栈中,并且只有其中一个子控件可以在任何时候可见。QStackedLayout 允许用户切换堆栈中的子控件,即显示或隐藏每个子…

【docker】dockerfile构建镜像

一、Dockerfile概念 Dockerfile 是一个文本文件,文件中包含了一条条的指令(instruction),用于构建镜像。每一条指定构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。 1、dockerfile是 自…

HTTP的基本格式

HTTP/HTTPS HTTPhttp的协议格式 HTTP 应用层,一方面是需要自定义协议,一方面也会用到一些现成的协议. HTTP协议,就是最常用到的应用层协议. 使用浏览器,打开网站,使用手机app,加载数据,这些过程大概率都是HTTP来支持的 HTTP是一个超文本传输协议, 文本>字符串 超文本>除…

机器学习:决策树

决策树 决策树是一种基于树形结构的模型,决策树从根节点开始,一步步走到叶子节点(决策),所有的数据最终都会落到叶子节点,既可以做分类也可以做回归。 特征选择 根节点的选择该用哪一个特征呢&#xff…

python安全工具开发基础

文章目录 拷贝、with、is深拷贝、浅拷贝with 三器一闭迭代器生成器闭包装饰器 动态绑定垃圾回收网络编程UdpTcp 协程mysql预处理防止注入 redis未授权/弱密码 拷贝、with 、is a [11, 22, 33] b [11, 22, 33] ca print(id(a)) print(id(b)) print(id(c))print(a b) print(…

麒麟操作系统设置QT程序开机自启动有效方法

在麒麟操作系统上设置QT程序开机自启动的两种简单有效的方法。支持请点赞! 一、QT程序打包 1.设置环境变量 设置QT和linuxdeployqt的环境变量,已设置可忽略该步骤。 在/etc/profile文件末尾添加一下内容: export PATH/usr/local/Qt-5.15.…

为什么你应该开始学习量子机器学习

一、介绍 你好!这里介绍全新知识--量子计算。在这里,我打算撰写和分享有关量子机器学习(QML)的文章。 我第一次听说量子计算是在2015年,当时我正在分析我的博士论文的可能性,我的前老板和导师告诉我研究这个…

AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率)

AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率) AI(人工智能)的大框架有很多种,以下是一些常见的AI框架: TensorFlow:由谷歌开发的开源机器学习框架,支持各种任务,包括图像…

Http常见问题

说说 HTTP 常用的状态码及其含义? HTTP 状态码首先应该知道个大概的分类: 1XX:信息性状态码2XX:成功状态码3XX:重定向状态码4XX:客户端错误状态码5XX:服务端错误状态码 301:永久性…

每日一题 279完全平方数(完全背包)

题目 完全平方数 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而…