5.C++程序中的注释
我们来看上节所写的程序
#include <iostream>
using namespace std;void prnt() //打印A
{cout << "printA" << endl;
}int main()
{prnt();return 0;
}
上面的程序中“//打印A”,表示说明当前函数是打印内容的函数,具体打印结果,写了一个A,没有再进行更详细的描述,这个时候,我们看到的时候,能大概了解一下这个函数是做什么的,但是还得要执行函数才能知道结果,那么 ”//“后面的内容就是注释。
在编程时,注释是一个非常实用的一个工具或者是功能,可以极大提高代码的可读性和可维护性,上面的函数比较简单,可能看一眼就知道是什么意思,但是如果写一个功能复杂的函数或者是比较大的函数,看一下下面的函数(非C++代码,实际工作时写的方法)
public TmsDistributionLineVo autoDistributionLine(String accessId, BasePickUpPoint point, String orderChannel) {try {/*** 获取距离最近的点*/MPJQueryWrapper<TmsDistributionLine> mpjQW = null;/*** 获取距离最近的线*/mpjQW = new MPJQueryWrapper<TmsDistributionLine>();String sql = StrUtil.format(" st_distance_sphere(point({},{}), point(lng_center,lat_center)) distance ",point.getLongitude(), point.getLatitude());mpjQW.select(" id,distribution_line_name," + sql);mpjQW.lambda().eq(TmsDistributionLine::getLogisticsAreaId, point.getLogisticsAreaId());mpjQW.eq("access_id", accessId);mpjQW.eq("is_del", 0);mpjQW.eq("flag", 1);mpjQW.lambda().eq(TmsDistributionLine::getOrderChannel, orderChannel);mpjQW.orderByAsc("distance");mpjQW.last(" limit 1");TmsDistributionLineVo line = this.selectJoinOne(TmsDistributionLineVo.class, mpjQW);if (line != null && line.getDistance().doubleValue() < 1000) { } else {mpjQW = new MPJQueryWrapper<TmsDistributionLine>();sql = StrUtil.format(" st_distance_sphere(point({},{}), point(longitude,latitude)) distance ",point.getLongitude(), point.getLatitude());mpjQW.innerJoin(" tms_distribution_line_delivery_point_ref b on t.id = b.distribution_line_id ");mpjQW.innerJoin(" base_pick_up_point c on c.id = b.delivery_point_id ");mpjQW.select("t.id, t.distribution_line_name," + sql);mpjQW.lambda().eq(TmsDistributionLine::getLogisticsAreaId, point.getLogisticsAreaId());mpjQW.lambda().eq(TmsDistributionLine::getAccessId, accessId).eq(TmsDistributionLine::getIsDel, 0).eq(TmsDistributionLine::getFlag, 1);mpjQW.lambda().eq(TmsDistributionLine::getOrderChannel, orderChannel);mpjQW.orderByAsc("distance");mpjQW.last(" limit 1");TmsDistributionLineVo vo = this.selectJoinOne(TmsDistributionLineVo.class, mpjQW);//if (line == null && vo != null)line = vo;else {if (vo != null && vo.getDistance().doubleValue() < line.getDistance().doubleValue()) //{line = vo;}}}distributionLineDeliveryPointRefService.autoSaveRef(point.getLogisticsAreaId(), line.getId(), point.getId(), accessId, orderChannel);return line;} catch (Exception ex) {log.error(ex.getMessage());return null;}
我们写的时候,可以感觉此代码挺简单,功能也想很清楚,但是等过一段时间,再返回来看此代码,就有点摸不着头脑了,得需要一点点去分析,去执行调试才能知道是什么意思。而且如果让其它人看此代码,可能更不清楚代码是什么意思,需要给其它人解析哪一段是什么意思,执行之后,将产生什么结果等等。不利用程序的维护,可读性差。
在C++代码中的注释语法有两种,单行注释(//)和多行注释(/*....*/)。在编译的时候,编译器会自动忽略注释的内容。
单行注释(//)
单行注释用于注释一行代码,比如对某一个变量的说明,如上面的
void prnt() //打印A
//打印A就是单行注释。
多行注释主要用于注释整个代码块,在注释中可以写明当前注释的内容,或者是介绍当前函数的意义,实现方式,返回数据的类型等,也可以注释掉整个代码块。
#include <iostream>
using namespace std;/*** 主要用于实现打印功能,打印的内容为printA * * @author 码农豆豆* @version v1.0 * * @return 无返回* * **/
void prnt()
{cout << "printA" << endl;
}int main()
{prnt();return 0;
}
上面的注释就是典型的多行注释,用于解释当前函数的功能,作者,当前函数的版本号等等。
使用单行注释也可以完成,只是写起来比较累,而且很多不明确,不如多行注释规范和明确,如果当前函数暂时不需要,也可以注释掉
#include <iostream>
using namespace std;/*** 主要用于实现打印功能,打印的内容为printA * * @author 码农豆豆* @version v1.0 * * @return 无返回* * **//* 暂时不需要,注释掉
void prnt()
{cout << "printA" << endl;
}
*/int main()
{//prnt();return 0;
}
函数注释后,在main中的引用也得注释了,否则就会找不到这个函数,提示没有定义。在main中,使用了单行注释。
所以在程序中写注释是一个很重要的事情,如果不写注释,将大大降低程序的可性读和易维护性。因此一定要养成顺手写注释的习惯
相关文章:
5.C++程序中的注释
我们来看上节所写的程序 #include <iostream> using namespace std;void prnt() //打印A {cout << "printA" << endl; }int main() {prnt();return 0; } 上面的程序中“//打印A”,表示说明当前函数是打印内容的函数,具体…...
com.kingbase8.util.KSQLException: ERROR: permission denied for table xxx
前言 在信创改造中,数据库替换为国产数据库是不可缺少的一部分。而可替换选项中多数选项无非是人大金仓和达梦数据库二选一。本文将介绍人大金仓在使用过程的问题以及解决办法。 问题 在使用人大金仓数据库后,程序运行报错 com.kingbase8.util.KSQLEx…...

开发小程序
由于之前购入的阿里云ECS放着落灰,碰巧又看到个有趣的项目,于是就做了个生成头像的小程序…由于第一次完整发布小程序,记录一下遇到的问题 小程序名称:靓仔创意头像 😂 关于小程序 接口请求,在开发过程中…...
JS考核答案
1.请简述var, let, const的区别? (1)块级作用域:块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题: 内层变量可能覆盖外层变量 用来计数的…...

高德地图2.0 绘制、编辑多边形覆盖物(电子围栏)
1. 安装 npm i amap/amap-jsapi-loader --save移步:官方文档 2. map组件封装 <script lang"ts" setup> import AMapLoader from amap/amap-jsapi-loader import { onMounted, ref } from vue import { propTypes } from /utils/propTypesdefineO…...

MySQL底层为什么选择用B+树作为索引
首先,我们来想想为什么这么多数据结构,为什么要用树这种数据结构? 众多的数据结构在逻辑层面可分为:线性结构 和 非线性结构。 线性结构有:数组、链表,基于它们衍生出的有哈希表(哈希表也称散…...

MATLAB系列05:自定义函数
MATLAB系列05:自定义函数 5. 自定义函数5.1 MATLAB函数简介5.2 在MATLAB中传递变量:按值传递机制5.3 选择性参数5.4 用全局内存分享数据5.5 在函数两次调用之间本地数据的存储5.6 函数的函数(function functions)5.7 子函数和私有函数5.8 总结 5. 自定义…...

C++速通LeetCode简单第20题-多数元素
方法一:暴力解法,放multiset中排序,然后依次count统计,不满足条件的值erase清除。 class Solution { public:int majorityElement(vector<int>& nums) {int ans 0;multiset<int> s;for(int i 0;i < nums.s…...

回收站永久删除的文件还能恢复吗?教你恢复技巧
在数字时代,电脑是我们工作、学习和娱乐的重要工具。然而,随着我们对电脑的频繁使用,误删文件的情况也时有发生。当我们在回收站中不小心永久删除了某个重要文件时,内心可能会充满焦虑和疑惑:这些文件还能恢复吗&#…...
Python Web 微服务架构全面解析与实战指南
Python Web 微服务架构全面解析与实战指南 目录 🏗️ 微服务基础概念 微服务架构与单体架构的对比微服务的优点与挑战 🔄 服务间通信 使用REST、gRPC或消息队列实现服务通信API网关的使用(如Kong、Traefik) 🔍 服务…...

SEAFARING靶场漏洞攻略
寻找漏洞 一,我们打开页面 第一个漏洞 xss漏洞 1.在登录页面显示有弹窗 第二个漏洞 sql注入漏洞 1.在输入框的地方输入-1 union select 1,2,3#我们来查看他的回显点 2.查看数据库表名 -1 union select 1,database(),3# 3.查看表名 -1 union select 1,2,group…...

ROS 编程入门的介绍
2.1 创建 ROS 功能包 ROS(Robot Operating System)是一种开源的机器人软件框架,广泛用于机器人开发中。通过使用 ROS,开发者可以轻松创建和管理机器人应用程序。在本节中,我们将介绍如何创建一个 ROS 功能包并实现一些…...
第十一章 抽象类与接口
一、抽象类和抽象方法 抽象类:使用abstract修饰的类 抽象方法:在类中没有方法体的方法,称为抽象方法,抽象方法用abstract修饰 抽象类中可以没有抽象方法,包含抽象方法的类必是抽象类 如果子类没有实现父类中的全部…...

请问企业的八大金刚系统是哪些?有什么共同点和区别?
我的理解的八大金刚包括:MES、ERP、WMS、OMS、CRM、SCM、SRM、PLM。 这些系统的主要功能及运用领域是哪些方面?他们互相之前有什么区别?选择时哪些是企业可能根据自身需求选择的必选项目或可选项目? 由于某些系统的必选性取决于企业的具体业…...

【入门】配置 Java 应用程序的完整指南
前言: Java 是一种广泛使用的编程语言,具备跨平台的特性,使得其应用程序可以在多种环境中高效运行。本文将介绍如何将 Java 应用程序从开发环境部署到生产环境,确保其能够稳定、稳定地运行运行。 确定运行环境 Java程序可以运行…...
flutter widget 设置GestureDetector点击无效
有可能是被上层的widget挡住了,虽然你看得到这个widget,但是操作不到。使用相对布局Stack要特别注意,这种布局会和Android一样,先写的布局放在下层,后写的,如果范围较大的话,会盖在之前的widget…...

基于SpringBoot的在线教育平台的设计与实现
文未可获取一份本项目的java源码和数据库参考。 选题的背景与意义: 随着互联网时代信息技术的不断发展,线下已经产生了很多IT技术的培训机构,但是价格却十分昂贵并且需要人们持续不断的去具体培训地点学习,因此更需要一个课程优…...

Django_Vue3_ElementUI_Release_004_使用nginx部署
1. nginx安装配置 1.1 下载nginx Download nginx 1.2 测试一下 1.3 进入nginx用命令操作 2. 部署 2.1 前端部署 2.1.1 修改nginx监听配置 …conf/nginx.conf http {... # 这里不进行修改server {listen 8010; # 监听 80 端口server_name 192.168.10.24; # 输入服务器 ip…...
Java抽象类的案例
抽象类的特点总结 不能实例化:抽象类不能直接创建实例。它只能被继承。即,你不能用 new 关键字创建抽象类的对象。 可以包含抽象方法:抽象类可以包含一个或多个抽象方法(没有方法体),这些方法必须在子类中…...
运维工程师面试整理-数据库
在运维工程师的面试中,数据库管理和优化是一个非常重要的环节。面试官可能会通过数据库相关的问题来评估你在数据库部署、管理、备份、性能优化以及故障排除方面的能力。以下是关于数据库部分的详细内容,帮助你更好地准备面试。 1. 数据库基础 ● 常见数据库类型 ○ 关系型数…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...

react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架
1、菜单文件treeTop.js // 顶部菜单 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定义菜单项数据 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 权限管理,key: 2,icon:…...