【C++】类的声明 与 类的实现 分开 ① ( 类的声明 与 类的实现 常用用法 | Visual Studio 2019 中创建类的头文件和源文件 | 确保头文件包含一次 )

2023-09-09 21:56:16





一、类的声明 与 类的实现 分开




1、类的声明 与 类的实现 常用用法


在之前的博客中 , 定义的 class 类 , 定义类时 同时 也完成了实现 ;

但是在 C++ 语言实际开发中 , 大部分的情况下 , 类的声明 与 类的实现 是分开的 , 这样可以使程序代码更清晰 , 易于管理 和 维护 ;

  • 在 .h 后缀 的头文件 中写 类的声明 代码 ;
  • 在 .cpp 后缀 的源码文件 中写 类的实现 代码 ;

上述 .h 后缀 的头文件 和 .cpp 后缀 的源码文件 , 可以手动创建添加 , 也可以使用 IDE 自带的创建类功能添加 ,

这里推荐后者 , 下面的章节讲解在 Visual Studio 2019 中创建类 的方法 ;


2、Visual Studio 2019 中创建类的头文件和源文件


右键点击 " 解决方案资源管理器 " 中的解决方案名称 , 在弹出的菜单中选择

" 添加 / 类 " 选项 ,

在这里插入图片描述

在弹出的 " 添加类 " 对话框中 , 输入 类名 Student , 就会自动生成 Student.h 和 Student.cpp 的 头文件 和 源码文件名称 ;

在这里插入图片描述

生成的 Student.h 头文件内容如下 : 在该头文件中 , 声明 Student 类 ;

#pragma once
class Student
{
};

在这里插入图片描述

生成的 Student.cpp 源码文件如下 : 在该源码文件中 实现类 ;

#include "Student.h"

在这里插入图片描述


3、Student.h 类头文件解析


#pragma once 代码的作用是 确保 该头文件 在 整个程序中 , 只能被 include 包含一次 ;

// 确保 该头文件 只包含一次
#pragma once

上述 #pragma once 代码与 下面的代码 实现的功能是相同的 , 在 C 语言中 , 只能使用宏定义的方式防止 include 二次包含 ;

#ifndef __Student_H_
#define __Student_H_

// 源码主要内容

#endif // !__Student_H_

在 C++ 中可以都使用 ;


生成的默认类只有一个类名 , 没有其它内容 ;

class Student
{
};

4、确保头文件包含一次


确保头文件包含一次的方法 :

  • C++ 语言 : 在 C++ 语言中 , 既可以使用 #pragma once , 又可以使用 #ifndef _Student_H 的方式 , 确保头文件只被包含一次 ;
#pragma once
class Student
{
};
  • C 语言 : C 语言中 , 使用 #ifndef _Student_H 的方式 , 确保头文件只被包含一次 ;
#ifndef __Student_H_
#define __Student_H_

class Student
{
};

#endif // !__Student_H_
更多推荐

JAXB(Java Architecture for XML Binding)下载、使用

简介JAXB(JavaArchitectureforXMLBinding)就是XML数据绑定的java架构。JAXB可以根据XMLSchema生成java类,也能根据java类生成XMLSchema,XML数据绑定指定了XML请求和XML响应如何映射成java对象。JAXB提供了API和工具,可以自动在XML文档和ja

激活函数总结(四十一):激活函数补充(ShiLU、ReLUN)

激活函数总结(四十一):激活函数补充1引言2激活函数2.1ShiLU激活函数2.2ReLUN激活函数3.总结1引言在前面的文章中已经介绍了介绍了一系列激活函数(Sigmoid、Tanh、ReLU、LeakyReLU、PReLU、Swish、ELU、SELU、GELU、Softmax、Softplus、Mish、Maxo

[C++ 网络协议] 套接字和标准I/O

1.标准I/O函数的优缺点优点一:标准I/O函数具有良好的移植性。为了支持所有系统,标准I/O函数都是按照标准来定义的。适用于所有编程领域。优点二:标准I/O函数可以利用缓冲提高性能。使用标准I/O函数会得到额外的缓冲支持,当创建套接字时,操作系统将会生成一个用于I/O的缓冲,同时,当你使用标准I/O函数,将会得到另一

8.gec6818开发板通过并发多线程实现电子相册 智能家居 小游戏三合一完整项目

并发前面编写的程序都是从mian函数开始,从上往下执行,称为顺序执行假设一个程序需要I输入C计算P输出,以顺序执行三个上述程序,则其执行过程如下:程序内部的语句是一条一条的执行,如果要运行多个程序,这些程序也是一个一个的依次执行,若上述的三种操作,每种操作需要的时间都是t,则执行上述三个程序共需要9t而在上述程序的执行

探索AI图像安全,助力可信AI发展

探索AI图像安全,助力可信AI发展0.前言1.人工智能发展与安全挑战1.1人工智能及其发展1.2人工智能安全挑战2.WAIC2023多模态基础大模型的可信AI2.1WAIC2023专题论坛2.2走进合合信息3.AI图像安全3.1图像篡改检测3.2生成式图像鉴别3.3OCR对抗攻击技术4.可信AI技术标准小结相关链接0.

具体项目下解决Echarts多端同步开发和维护的问题

具体问题场景PC端和移动端需要同时上线图表功能(没有多余工时)之后的版本迭代(功能、样式、配置等)默认双端同步,开发人员只希望维护一套代码Echarts在移动端有部分功能不兼容不支持Echarts在移动端的坑①移动端页面使用echarts4中的地图组件,并添加省份的点击事件,响应click无效,eharts也不支持ta

在Ubuntu 系统下开发GUI,用哪种开发工具比较好?

在Ubuntu系统下开发GUI,你可以考虑使用以下几种开发工具:QtCreator:QtCreator是一个跨平台的集成开发环境,专门用于开发基于Qt框架的应用程序。它提供了丰富的图形界面设计工具和代码编辑器,支持C++和QML编程。QtCreator具有良好的跨平台支持和强大的功能,适用于开发各种类型的GUI应用程序

每天一个注解之@WebService

@WebService@WebService是JavaAPIforXMLWebServices(JAX-WS)中的注解,用于标识一个类或接口作为一个可通过网络访问的Web服务。通过使用@WebService注解,你可以将普通的Java类转换成可发布为Web服务的类。以下是@WebService注解的一些常见用法和示例:

webpack:详解代码分离以及插件SplitChunksPlugin的使用

文章目录背景入口起点分离基本使用防重复SplitChunksPlugin插件分离背景基本使用splitChunks.chunkssplitChunks.minChunkssplitChunks.minSizesplitChunks.maxSizesplitChunks.namesplitChunks.cacheGrou

AI绘图提示词Stable Diffusion Prompt 笔记

基础提示词分为正向提示词(positiveprompt)和反向提示词(negativeprompt),用来告诉AI哪些需要,哪些不需要词缀的权重默认值都是1,从左到右依次减弱,权重会影响画面生成结果。AI会依照概率来选择性执行,如提示词之间有冲突,AI会根据权重确定的概率来随机选择执行哪个提示词。生成图片的大小会影响P

聚观早报 | 飞书签约韵达速递;蔚来首颗自研芯片“杨戬”量产

【聚观365】9月22日消息飞书签约韵达速递蔚来首颗自研芯片“杨戬”10月量产靳玉志接任华为车BUCEO亚马逊发布全新Alexa语音助手OpenAI推出图像生成器DALL-E3飞书签约韵达速递近日,国内物流服务公司韵达快递宣布全员上飞书。飞书解决方案副总裁何斌表示,“飞书将助力韵达快递进行全方面的数字化变革,包括:全场

热文推荐