C++ 中的头文件和源文件

#include<>一般用于包含系统头文件,诸如stdlib.h、stdio.h、iostream等;

类库目录下查找失败,编译器会终止查找,直接报错:No such file or directory.

#include""一般用于包含自定义头文件,比如我们自定义的test.h、declare.h等。

#include"":默认从项目当前目录查找头文件,即项目工程文件(*.vcxproj)所在的目录。查找失败,再从项目配置的头文件引用目录查找头文件。如果项目配置的头文件引用目录中仍然查找失败,再从系统类库目录里查找头文件,因此,对于系统库头文件,#include<>和#include""的作用一样,都能查找成功,但是效率很低。而且会头文件覆盖。

头文件(.h)

头文件用来写 类的声明 (包括类的成员的声明和方法声明)、函数原型#define 常数

#ifndef MYCLASS_H
#define MYCLASS_H

// code here

#endif
 

防止头文件被重复引用同一个头文件(.h)在同一个源文件(.cpp)中被include了多次 

例子:存在cellphone.h这个头文件引用了#include "huawei.h",之后又有china.cpp这个源文件同时导入了#include "cellphone.h" 和 #include "huawei.h"。此时huawei.h就在一个源文件里引用了两次。 

#ifndef HUAWEI_H       // 防止huawei.h被重复引用
#define HUAWEI_H#include <cmath>       // 引用标准库
#include "honor.h"     // 引用非标准库头文件
...
void Function();  	   // 全局函数声明
class Mate20{		   // 类声明public: Mate20();  // 构造函数声明~Mate20(); // 析构函数声明  private:protected:
};#endif

源文件(.cpp)

源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。

#ifndef PEN_H
#define PEN_H
#include <string>
class Pen
{
public:
    Pen(std::string brand);

};

#endif
 

#include <iostream>
#include "Pen.h"
using namespace std;

Pen::Pen(string brand) {
    cout << "What brand are you looking for?" << endl;
    cout << brand;
}    

int main() {
    Pen pilot("pilot");
    
}

// 输出结果为 
/* What brand are you looking for?
   pilot */
 

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

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

相关文章

【JAVA】CSS3:3D、过渡、动画、布局、伸缩盒

1 3D变换 1.1 3D空间与景深 /* 开启3D空间,父元素必须开启 */transform-style: preserve-3d;/* 设置景深&#xff08;你与z0平面的距离 */perspective:50px; 1.2 透视点位置 透视点位置&#xff1a;观察者位置 /* 100px越大&#xff0c;越感觉自己边向右走并看&#xff0c;…

stega1

题目链接&#xff1a;ctf.show 下载附件打开是一张jpg照片 无密码型jphs隐写得到flag flag{3c87fb959e5910b40a04e0491bf230fb}

微信小程序开发系列(二十五)·wxml语法·条件渲染wx:if, wx:elif, wx:else 属性组以及hidden 属性的使用

目录 1. 使用 wx:if、wx:elif、wx:else 属性组 2. 使用 hidden 属性 条件渲染主要用来控制页面结构的展示和隐藏,在微信小程序中实现条件渲染有两种方式: 1. 使用 wx:if, wx:elif, wx:else 属性组 2. 使用 hidden 属性 wx:if 和 hidden 二者的区别&#xff1a; 1. wx…

操作系统笔记(进程)

注&#xff1a; 下面图片资源来源于 王道计算机考研 操作系统 1.进程概念 进程&#xff08;process&#xff09;&#xff1a;是动态的&#xff0c;是程序的一次执行过程&#xff08;同一程序多次执行&#xff0c;会产生多个进程&#xff09;程序&#xff1a;是静态的&…

synchronized 锁的升级

锁的状态 synchronized 在jdk1.6之前是重量级锁&#xff0c;每次都要去和操作系统打交道&#xff0c;而操作系统层面的操作是比较耗性能的&#xff0c;需要将用户态转换为内核态。所以在jdk1.6后就有了锁的升级过程&#xff0c;总共有四种状态&#xff1a;无锁、偏向锁、轻量级…

基于电鳗觅食优化算法(Electric eel foraging optimization,EEFO)的无人机三维路径规划(提供MATLAB代码)

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化飞行…

指针【理论知识速成】(5)

一.回调函数&#xff1a; 1.什么事回调函数&#xff1a;通过函数指针调用函数 2.应用例子&#xff1a; https://blog.csdn.net/hot_water_oh/article/details/136572650?spm1001.2014.3001.5501 &#xff08;此链接为提到转义表所在博客的链接&#xff09; 依然以转义表为例…

drone ci 是什么

Drone CI是一个开源的持续集成和持续部署&#xff08;CI/CD&#xff09;系统&#xff0c;它使用Docker容器技术自动化软件的构建、测试和部署过程。Drone的设计哲学是简单和易用&#xff0c;通过使用Docker容器&#xff0c;它可以很容易地创建隔离的环境来运行测试和部署任务&a…

STM32使用定时器驱动电机

STM32使用定时器驱动电机 1、对定时器进行初始化配置1.1、include "encoder.c"文件 主函数 1、对定时器进行初始化配置 1.1、include "encoder.c"文件 #include "encoder.h"void TIM4_Encoder_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO…

详细讲解Xilinx DDR3 的MIG IP生成步骤及参数含义

前几篇文章讲解了SDRAM到DDR3各自的变化&#xff0c;本文讲解如何使用DDR3&#xff0c;在Altera的Cyclone IV开发板上一般会使用SDRAM作为存储数据的芯片&#xff0c;而Xilinx的S6和7000系列一般使用DDR3作为存储数据的芯片。 从SDRAM芯片内部结构分析其原理&#xff0c;从内部…

策略模式(Strategy mode)

一、策略模式概述 策略模式是一种行为设计模式&#xff0c;它定义了一系列的算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。在游戏开发中&#xff0c;这意味着我们可以根据不同的游戏状态、角色类型…

从空白镜像创建Docker hello world

文章目录 写在前面基础知识方法一&#xff1a;使用echo工具方法二&#xff0c;使用c语言程序方法三&#xff0c;使用汇编语言小结 写在前面 尝试搞了下docker&#xff0c;网上的教程大多是让下载一个ubuntu这种完整镜像&#xff0c;寥寥几篇从空白镜像开始创建的&#xff0c;也…

HSM 网络安全 信息安全

文章目录 HSMHSM信息安全功能汽车电子网络安全中HSM 的应用场景选择适合汽车电子网络安全的 HSM符合汽车安全标准和法规要求的HSMHSM 在汽车电子网络安全中的可靠性和安全性评估汽车电子网络的安全性汽车 HSM(Hardware Security Module)模块开发汽车 HSM(Hardware Security …

文件系统事件监听

文件系统事件和网络IO事件一样&#xff0c;也可以通过epoll或者IOCP 事件管理器统一调度&#xff0c;当所监控的文件或文件夹发生了增删改的事件时&#xff0c;就会触发事件回调&#xff0c;进行事件处理。很常见的应用&#xff0c;如配置文件立即生效功能&#xff0c;就可以通…

SpringBoot自定义banner,自定义logo

SpringBoot自定义banner&#xff0c;自定义logo 在线网站 http://www.network-science.de/ascii/?spma2c6h.12873639.article-detail.9.7acc2c9aSTnQdW https://www.bootschool.net/ascii?spma2c6h.12873639.article-detail.8.7acc2c9aSTnQdW https://patorjk.com/softwa…

官方安装配置要求服务器最低2核4G

官方安装配置要求服务器至少2核、4G。 如果服务器低于这个要求&#xff0c;就没有必要安装&#xff0c;因为用户体验超级差。 对于服务器CPU来说&#xff0c;建议2到4核就完全足够了&#xff0c;太多就浪费了&#xff0c;但是内存越大越好&#xff0c;最好是4G以上。 如果服务器…

创建Django项目,实现视图,路由

初识Django 1、创建Django项目 Django项目的创建的路径不要有中文和空格&#xff1b;【计算机名称不要是中文】 1、在cmd中命令进行创建Django项目打开存放项目的位置创建Django项目&#xff1a;django-admin startproject 项目名称(注意&#xff1a;项目名称不要是中文)启动…

贝叶斯优化的门控循环神经网络BO-GRU(时序预测)的Matlab实现

贝叶斯优化的门控循环神经网络&#xff08;BO-GRU&#xff09;是一种结合了贝叶斯优化&#xff08;Bayesian Optimization, BO&#xff09;和门控循环单元&#xff08;Gated Recurrent Unit, GRU&#xff09;的模型&#xff0c;旨在进行时序预测。这种模型特别适用于时间序列数…

计算机网络概述(接入网和物理媒体)

一、接入网和物理媒体 将终端系统连接到边缘路由器的途径&#xff1a; 住宅接入网、机构接入网络、移动接入网络。 1.接入网:家庭网络 &#xff08;1&#xff09;Dial-up&#xff08;拨号&#xff09; Modem 将上网数据调制加兹安音频信号上在电话线是哪个传输&#xff0c;在…

VBA(学习笔记)

1. 数据类型 变量定义&#xff1a;Dim 变量名 As 数据类型 变量赋值&#xff1a;变量名 值 1.1 数值型 1.1.1 整数 (1) Byte&#xff1a;1字节&#xff08;0~255&#xff09; (2) Integer&#xff1a;2字节&#xff08;-32768~32767&#xff09; (3) Long&#xff1a;4…