当前位置: 首页 > news >正文

C ++ 学习之分文件 实现类

前言

当您在 C++ 中编写较大的程序时,将所有代码都放在一个文件中可能会变得混乱和不可维护。为了更好地组织代码并提高可维护性,您可以使用分文件实现(Separate Compilation)的概念。

正文

我的 circle.h 文件

#pragma once
#include<iostream>using namespace std;class circle
{public:void set_R(int len);private:int R;
};

我的 circle.cpp 文件

#include"circle.h"void circle::set_R(int len)
{R = len;
}

我的 main.cpp 文件

#pragma once
#include<iostream>
using namespace std;
#include"circle.h"int main()
{circle one;one.set_R(10);
}

讲解

分文件实现的主要思想是将一个类的声明和实现分别放在不同的文件中。这有助于保持代码的结构清晰,使每个文件的职责更加明确。在您的示例中,您使用了 circle.h、circle.cpp 和 main.cpp 这三个文件来演示分文件实现。

circle.h: 这是头文件,通常包含类的声明。在这里,定义了一个 circle 类,并在其中声明了成员函数 set_R 和成员变量 R。头文件还包含了必要的 #include 指令,以便在其他文件中使用头文件中的声明,同时还避免了重复包含。

circle.cpp: 这是源文件,用于实现在头文件中声明的成员函数。在这里实现了 circle::set_R 函数,将参数的值赋给了 R 成员变量。通过将实现分离到单独的源文件中,您可以避免在头文件中暴露太多实现细节。

main.cpp: 这是主程序文件,用于实际创建和使用 circle 对象。在这里,包含了 circle.h 头文件,以便能够使用 circle 类的声明。然后,在 main 函数中创建了一个 circle 对象,并调用了它的 set_R 函数来设置半径值。

分文件实现的好处包括:

模块化: 每个文件都关注一个特定的功能,代码更易于理解和维护。
可重用性: 您可以轻松地在其他项目中重用您的类,只需包含头文件和编译相应的源文件即可。
编译时间优化: 当您更改了一个源文件时,不必重新编译其他源文件,从而加快了编译时间。
隐藏实现细节: 头文件中只暴露必要的接口,隐藏了类的实现细节,增强了封装性。
总之,分文件实现是一种良好的编程实践,可以帮助您编写更有条理和可维护的代码。

相关文章:

C ++ 学习之分文件 实现类

前言 当您在 C 中编写较大的程序时&#xff0c;将所有代码都放在一个文件中可能会变得混乱和不可维护。为了更好地组织代码并提高可维护性&#xff0c;您可以使用分文件实现&#xff08;Separate Compilation&#xff09;的概念。 正文 我的 circle.h 文件 #pragma once #i…...

vue+elementui前端rules校验缓存问题

场景&#xff1a; 最近公司要求项目前端不要用element-ui&#xff0c;改为使用公司其他组开发的ui组件。 这个ui组件使用基本就是安装后&#xff0c;直接全局替换elementui的el-前缀为公司开发的xx-前缀。 替换之后&#xff0c;发现替换倒是很丝滑&#xff0c;问题不大。可以运…...

使用Vue3和Vite升级你的Vue2+Webpack项目

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

WebSocket 协议及其使用案例

文章目录 前言一、初识 WebSocket 协议1.1 什么是 WebSocket 协议1.2 WebSocket 与 HTTP 的关系1.3 WebSocket 握手的过程1.4 WebSocket 解决了什么问题 二、WebSocket 数据帧格式2.1 WebSocket 数据帧格式图示2.2 各字段的详细说明 三、SpringBoot 项目中引入 WebSocket3.1 创…...

Java应用CPU占用过高故障排除

一、背景 最近测试反馈测试环境接口偶现有访问超时&#xff0c;然后APP提示是网络失败&#xff0c;看了一下测试环境的应用完全没啥问题&#xff0c;一直以为是网络问题。 今天测试有反馈了&#xff0c;赶紧看了一下测试服务器&#xff0c;这次终于有症状了&#xff0c;CPU直…...

嵌入式Linux开发实操(十五):nand flash接口开发(2)

通用NAND驱动程序支持几乎所有基于NAND的芯片,并将它们连接到Linux内核的内存技术设备(MTD)子系统。这个接口走的是nand的并口,可以在shell的/dev中看到设备,比如/mtd0、/mtd0ro…,mtdblock0、mtdblock1… sysfs在设备层次结构中提供了几个视角。设备必须挂在某条总线bus…...

作为一家游戏开发公司,有哪些经验可以分享?

在竞争激烈的游戏开发行业中&#xff0c;成功的游戏开发公司需要不断学习、创新和积累经验。作为一家经验丰富的游戏开发公司&#xff0c;我们愿意分享一些我们认为对于取得成功至关重要的经验和教训。这些经验涵盖了游戏开发的各个方面&#xff0c;从创意构思到发布和营销。希…...

【100天精通Python】Day51:Python 数据分析_数据分析入门基础与Anaconda 环境搭建

目录 1 科学计算和数据分析概述 2. 数据收集和准备 2.1 数据收集 2.1.1 文件导入&#xff1a; 2.1.2 数据库连接&#xff1a; 2.1.3 API请求&#xff1a; 2.1.4 网络爬虫&#xff1a; 2.2 数据清洗 2.2.1 处理缺失值&#xff1a; 2.2.2 去除重复值&#xff1a; 2.2…...

网络安全(黑客)自学路线

很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习&#xff0c;最终也只是会无疾而终&#xff01;黑客是一个大的概念&#xff0c;里面包含了许多方向&#xff0c;不同的方向需要学习的内容也不一样。 算上从学校开始学习&#xff0c;已经在网安这条路上走…...

HTML5

写在前面 一、简单认识HTML 1.1 什么是网页【2023/08/31】 网站是指因特网上根据一定的规则&#xff0c;使用HTML等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”&#xff0c;通常是HTML格式的文件&#xff0c;它要通过浏览器来阅读。 网页是构成网站的…...

Vue+Element-ui实现表格本地导入

表格文件存储在前端 如图&#xff0c;表格文件template.xlsx存储在public下的static文件夹下 注意这里的路径容易报错 a链接下载文件失败的问题(未发现文件&#xff09; a.href ‘./static/template.xlsx’ 写的时候不能带public&#xff0c;直接这么写就可以 DownloadTemp…...

Golang参数输入

Golang参数输入 1.命令行参数&#xff08;os.Args&#xff09; package mainimport ("fmt""os""strconv" )func main() {for i, num : range os.Args[1:] {fmt.Println("参数"strconv.Itoa(i)": ", num)} } //输入&#x…...

2023年8月第4周大模型荟萃

2023年8月第4周大模型荟萃 2023.8.31版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、美国法官最新裁定&#xff1a;纯AI生成的艺术作品不受版权保护 美国华盛顿一家法院近日裁定&#xff0c;根据美国政府的法律&#xff0c;在没有任何…...

Kafka监控工具,LinkedIn详解

Kafka监控工具包括以下几种&#xff1a; Kafka Manager&#xff1a;这是一个开源的Kafka集群管理工具&#xff0c;可以监控Kafka集群的健康和性能&#xff0c;并提供可视化的用户界面。 Kafka Monitor&#xff1a;这是LinkedIn开发的一个监控工具&#xff0c;可以监控Kafka集群…...

如何处理 Flink 作业频繁重启问题?

分析&回答 Flink 实现了多种重启策略 固定延迟重启策略&#xff08;Fixed Delay Restart Strategy&#xff09;故障率重启策略&#xff08;Failure Rate Restart Strategy&#xff09;没有重启策略&#xff08;No Restart Strategy&#xff09;Fallback重启策略&#xff…...

Windows 安装 RabbitMq

Windows 上安装 RabbitMQ 的步骤 RabbitMQ 是一个强大的开源消息队列系统&#xff0c;广泛用于构建分布式、可扩展的应用程序。本教程将带您一步一步完成在 Windows 系统上安装 RabbitMQ 的过程。无需担心&#xff0c;即使您是初学者&#xff0c;也能够轻松跟随这些简单的步骤…...

Mybatis的关系关联配置

前言 MyBatis是一个流行的Java持久化框架&#xff0c;它提供了一种简单而强大的方式来映射Java对象和关系数据库之间的数据。在MyBatis中&#xff0c;关系关联配置是一种用于定义对象之间关系的方式&#xff0c;它允许我们在查询数据库时同时获取相关联的对象。 在MyBatis中&…...

【知识积累】准确率,精确率,召回率,F1值

二分类的混淆矩阵&#xff08;预测图片是否是汉堡&#xff09; 分类器到底分对了多少&#xff1f; 预测的图片中正确的有多少&#xff1f; 有多少张应该预测为是的图片没有找到&#xff1f; 精确率和召回率在某种情况下会呈现此消彼长的状况。举个极端的例子&#xf…...

什么是分布式系统?

分布式系统是由多个独立的计算机或计算节点组成的系统&#xff0c;这些节点通过消息传递或共享数据的方式进行协调和通信&#xff0c;以实现共同的目标。分布式系统的设计目标是提高系统的可靠性、可扩展性、性能和容错性。 在一个分布式系统中&#xff0c;各个计算机节点之间…...

[AGC043D] Merge Triplets

题目传送门 引 很有意思的计数题 解法 考虑经过操作后得到的排列的性质 性质1&#xff1a; 设 p r e ( i ) pre(i) pre(i):前i个位置的最大值&#xff0c;则不会出现超过3个的连续位置的 p r e pre pre相同 必要性&#xff1a; 考虑反证&#xff0c;若有超过 3 3 3个的连续…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...