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

60天零基础干翻C++————初识C++

初识c++

  • 命名空间
    • 命名空间的定义
    • 命名空间的使用
  • 输入输出流
  • 缺省参数
  • 引用
    • 引用定义
    • 常量的引用
    • 引用的使用场景
      • 做函数参数
      • 引用做返回值

命名空间

命名空间的定义

在c语言中会有下面问题
在这里插入图片描述
上述代码中,全局变量rand 可能会命名冲突,如下图
在这里插入图片描述
在这里插入图片描述
此时编译失败,全局变量rand和stdlib.h发生命名冲突。冲突可能有两种:

  1. 与系统库冲突
  2. 与其他人冲突
    这就是c语言的一个不足,所以在c++中引入了命名空间。
    引入命名空间后又出现了新的问题:
    在这里插入图片描述
    输出结果不是0,似乎是个随机数。但是他并不是随机数,他是库中函数rand的打印,那么怎么才能打印命名空间域中的rand呢? 就需要使用命名空间限定符
    在这里插入图片描述
    使用了命名空间作用符 elk::rand,就可以访问命名空间内部。

命名空间的使用

  1. 命名空间的全部展开
using namespace std;

全部展可能会有以下冲突问题:
在这里插入图片描述
此时同时展开 elk bin出现了 命名冲突,所以在使用展开时,在工程中不能全部展开。

输入输出流

在c语言中 printf的使用很麻烦。在c++中引入了 cout cin 极大的加速了编程效率。在后面我们会对cout,cin进行深入探讨。下面演示如何使用:

  1. cout的输出 cout可以看做终端
    在这里插入图片描述
  2. cin 可以看做从终端输入
    在这里插入图片描述

缺省参数

缺省参数是声明函数和参数,提前为函数参数赋值一个参数。
在这里插入图片描述
缺省参数注意事项:

  1. 缺省参数从左往右依次给出
  2. 调用缺省函数时必须从左往右连续填充。

引用

引用定义

引用不是重新定义一个变量,而是给变量取一个别名。

  1. 一个变量可以有多个别名,一个别名只能对应一个变量
  2. 引用不是指针。
    在这里插入图片描述

常量的引用

常量的引用必须是权限的缩小,如下面程序:
在这里插入图片描述
在类型转换中,显示类型转换中:
在这里插入图片描述
此代码就会报错,原因如下:
在这里插入图片描述
将代码修改为具有const性质的:
在这里插入图片描述

引用的使用场景

做函数参数

  1. 引用的优点之一是可以避免拷贝形参。
#include <time.h>using namespace std;struct A { int a[10000]; };
void TestFunc1(A a) {}
void TestFunc2(A& a) {}
void TestRefAndValue()
{A a{};// 以值作为函数参数size_t begin1 = clock();for (size_t i = 0; i < 10000; ++i)TestFunc1(a);size_t end1 = clock();// 以引用作为函数参数size_t begin2 = clock();for (size_t i = 0; i < 10000; ++i)TestFunc2(a);size_t end2 = clock();// 分别计算两个函数运行结束后的时间cout << "TestFunc1(A)-time:" << end1 - begin1 << endl;cout << "TestFunc2(A&)-time:" << end2 - begin2 << endl;
}int main()
{TestRefAndValue();return 0;
}

运行结果如下:
在这里插入图片描述

引用做返回值

引用做返回值容易引起野引用问题。

int& Add(int a, int b)
{
int c = a + b;
return c;
}
int main()
{
int& ret = Add(1, 2);
Add(3, 4);
cout << "Add(1, 2) is :"<< ret <<endl;
return 0;
}

因为c是临时变量,临时变量在出函数栈帧会自动释放。所以,不能还回临时变量。

相关文章:

60天零基础干翻C++————初识C++

初识c 命名空间命名空间的定义命名空间的使用 输入输出流缺省参数引用引用定义常量的引用引用的使用场景做函数参数引用做返回值 命名空间 命名空间的定义 在c语言中会有下面问题 上述代码中&#xff0c;全局变量rand 可能会命名冲突&#xff0c;如下图 此时编译失败&…...

考研复试英语口语问答举例第二弹

考研复试英语口语问答举例第二弹 文章目录 考研复试英语口语问答举例第二弹Question &#xff1a;介绍你的读研兴趣与动机Answer11&#xff1a;&#xff08;自动化控制方向&#xff09;Answer12&#xff1a;&#xff08;集成电路方向&#xff09;Answer13&#xff1a;&#xff…...

MyBatis-Plus实现自定义SQL语句的分页查询

正常开发的时候&#xff0c;有时候要写一个多表查询&#xff0c;然后多表查询之后还需要分页&#xff0c;MyBatis-Plus的分页插件功能挺不错的&#xff0c;可以很简单实现自定义SQL的分页查询。 分页插件配置 import com.baomidou.mybatisplus.annotation.DbType; import com…...

vue3 里的 ts 类型工具函数

目录 前言一、PropType\<T>二、MaybeRef\<T>三、MaybeRefOrGetter\<T>四、ExtractPropTypes\<T>五、ExtractPublicPropTypes\<T>六、ComponentCustomProperties七、ComponentCustomOptions八、ComponentCustomProps九、CSSProperties 前言 相关 …...

【SpringCloud】之远程消费(进阶使用)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《SpringCloud开发之远程消费》。&#x1f3af;&a…...

自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程

大家好,我是微学AI,今天给大家介绍一下自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程。在大模型ChatGPT发布之前,NLP领域是BERT,T5模型为主导,T5(Text-to-Text Transfer Transformer)是一种由Google Brain团队在2019年提出的自然…...

CISSP 第5章 保护资产的安全

1、资产识别和分类 1.1 敏感数据 1.1.1 定义 敏感数据是任何非公开或非机密的信息&#xff0c;包括机密的、专有的、受保护的或因其对组织的价值或按照现有的法律和法规而需要组织保护的任何其他类型的数据。 1.1.2 个人身份信息PII 个人身份信息&#xff08;PII&#xff09…...

docker安装-在linux下的安装步骤

#切换到root用户 su yum安装jcc相关 yum -y install gcc yum -y install gcc-c 安装yum-utils sudo yum install -y yum-utils 设置stable镜像仓库 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 更新yum软件包索…...

在Uniapp中使用Echarts创建可视化图表

在uniapp中可以引入echarts创建数据可视化图表。 1. 安装Echarts 使用npm安装echarts插件&#xff0c;命令如下&#xff1a; npm install echarts --save2. 引入Eharts 在需要使用Echarts的页面引入&#xff1a; import *as echarts from echarts3. 创建实例 创建画布元素…...

基于python的leetcode算法介绍之动态规划

文章目录 零 算法介绍一 例题介绍 使用最小花费爬楼梯问题分析 Leetcode例题与思路[118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/)解题思路题解 [53. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/)解题思路题解 [96. 不同的二叉搜索树](h…...

通信原理期末复习——计算大题(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…...

【萤火虫系列教程】2/5-Adobe Firefly 文字​生成​图像

文字​生成​图像 登录账号后&#xff0c;在主页点击文字生成图像的【生成】按钮&#xff0c;进入到文字生成图像 查看图像 在文字生成图像页面&#xff0c;可以看到别人生成的图像。 点击某个图像&#xff0c;就可以进入图像详情&#xff0c;可以看到文字描述。 生成图像 我…...

JDK 11:崭新特性解析

JDK 11&#xff1a;崭新特性解析 JDK 11&#xff1a;崭新特性解析1. HTTP Client&#xff08;标准化&#xff09;示例代码 2. 局部变量类型推断的扩展示例代码 3. 新的字符串方法示例代码 4. 动态类文件常量示例代码 5. Epsilon 垃圾收集器使用方式 结语 JDK 11&#xff1a;崭新…...

leetcode.在链表中插入最大公约数

文章目录 题目解题方法复杂度Code Problem: 2807. 在链表中插入最大公约数 题目 给你一个链表的头 head &#xff0c;每个结点包含一个整数值。 在相邻结点之间&#xff0c;请你插入一个新的结点&#xff0c;结点值为这两个相邻结点值的 最大公约数 。 请你返回插入之后的链表。…...

云原生学习系列之基础环境准备(单节点安装kubernetes)

一、环境要求 操作系统CentOS 7.x-86_x64 硬件配置&#xff1a;内存2GB或2G&#xff0c;CPU 2核或CPU 2核&#xff0c;需要在虚拟机中提前设置好&#xff0c;不然后续会报错 二、系统初始化 1、设置主机名 # 在master节点执行 hostnamectl set-hostname master01 2、配置主…...

【数据结构】二叉树的概念及堆

前言 我们已经学过了顺序表、链表、栈和队列这些属于线性结构的数据结构&#xff0c;那么下面我们就要学习我们第一个非线性结构&#xff0c;非线性结构又有哪些值得我们使用的呢&#xff1f;那么接下来我们就将谈谈树的概念了。 1.树的概念与结构 1.1树的概念 树是一种非线性…...

美年大健康黄伟:从选型到迁移,一个月升级核心数据库

核心生产系统的数据库&#xff0c;从接到替换需求到完成分布式升级&#xff0c;需要多久&#xff1f;一个月&#xff0c;这是美年大健康的回答。一个月集中调配各种资源&#xff0c;美年大健康完成了应用程序基本零改造的平滑迁移&#xff0c;新数据库在成本更低的前提下&#…...

OpenHarmony应用构建工具Hvigor的构建流程

前言 OpenHarmony 应用和服务使用 Hvigor 作为工程的构建工具。本篇文章将介绍 Hvigor 的构建流程&#xff0c;通过修改脚本配置使 Hvigor 执行自定义任务。 Hvigor 的构建流程 加载命令行参数和环境变量&#xff1b;初始化项目结构&#xff0c;创建 Project 和 Module 实例…...

ChatGPT在金融财务领域的10种应用方法

1.生成报告 在金融领域中&#xff0c;最耗时的任务之一是报告生成。通过ChatGPT&#xff0c;您可以在一定程度上自动化这个过程。这款人工智能工具可以获取关于公司财务表现的结构化数据&#xff0c;并生成一份书面摘要&#xff0c;详细说明关键点、趋势和观察结果。这个功能在…...

全程云OA ajax.ashx SQL注入漏洞复现

0x01 产品简介 全程云OA为企业提供日常办公管理、公文管理、工作请示、汇报、档案、知识体系、预算控制等26个功能,超过100多个子模块。为企业内部提供高效、畅通的信息渠道,同时也能大力推动公司信息系统发展,提高企业的办公自动化程度和综合管理水平,加快企业信息的流通…...

Fish Speech 1.5保姆级教程:零代码实现Markdown文档转语音

Fish Speech 1.5保姆级教程&#xff1a;零代码实现Markdown文档转语音 1. 为什么选择Fish Speech 1.5&#xff1f; 在日常工作中&#xff0c;我们经常需要处理大量Markdown格式的技术文档。传统的文本转语音工具往往存在几个痛点&#xff1a;声音机械生硬、无法处理Markdown特…...

Pixel Dream Workshop 团队协作:基于 GitHub 管理提示词库与生成资产

Pixel Dream Workshop 团队协作&#xff1a;基于 GitHub 管理提示词库与生成资产 1. 创意协作的痛点与解决方案 在数字创意领域&#xff0c;团队协作往往面临诸多挑战。创意想法难以系统化管理&#xff0c;优秀提示词散落在各个成员手中&#xff0c;生成参数缺乏统一标准&…...

FLUX.1-dev零基础入门:5分钟学会用ComfyUI生成高质量AI图片

FLUX.1-dev零基础入门&#xff1a;5分钟学会用ComfyUI生成高质量AI图片 1. 为什么选择FLUX.1-dev FLUX.1-dev是由Black Forest Labs开发的开源AI图像生成模型&#xff0c;以其出色的图像质量和类似照片的真实感而闻名。与其他模型相比&#xff0c;它能够更高效地生成艺术感强…...

MCU开发 —— GD32篇:SEGGER Embedded Studio 外链编译器实战指南

1. 为什么选择SEGGER Embedded Studio开发GD32 SEGGER Embedded Studio&#xff08;简称SES&#xff09;作为一款轻量级跨平台IDE&#xff0c;这几年在嵌入式开发圈子里口碑相当不错。我自己从Keil转过来用SES开发GD32系列MCU已经两年多了&#xff0c;最直观的感受就是编译速度…...

OpenClaw低代码方案:Qwen3-32B将Excel需求转为自动化流程

OpenClaw低代码方案&#xff1a;Qwen3-32B将Excel需求转为自动化流程 1. 从Excel到ERP的自动化困境 上周市场部的同事又来找我帮忙了。他们每天要手动将几十份Excel表格里的客户订单录入到公司老旧的ERP系统里——这个上世纪风格的绿色界面软件&#xff0c;既没有批量导入功能…...

低成本硬件在环方案:不用NI/dSPACE如何实现Simulink+Carsim实时仿真

低成本硬件在环方案&#xff1a;不用NI/dSPACE如何实现SimulinkCarsim实时仿真 在汽车电子和自动驾驶研发领域&#xff0c;硬件在环&#xff08;HIL&#xff09;测试是验证控制算法可靠性的关键环节。传统方案依赖NI或dSPACE等昂贵设备&#xff0c;动辄数十万的投入让中小团队望…...

Win11Debloat:3步让你的Windows 11系统重获新生

Win11Debloat&#xff1a;3步让你的Windows 11系统重获新生 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改善你的…...

UIImage命名检查黑科技:用Runtime拦截空字符串导致的CUICatalog崩溃

UIImage命名检查黑科技&#xff1a;用Runtime拦截空字符串导致的CUICatalog崩溃 在iOS开发中&#xff0c;图片资源管理看似简单&#xff0c;却暗藏玄机。当团队规模扩大、项目复杂度上升时&#xff0c;一个被忽视的空字符串可能引发连锁反应——[UIImage imageNamed:"&quo…...

融合熵权、灰色关联与TOPSIS的MATLAB实战:构建智能综合评价系统

1. 为什么需要综合评价系统&#xff1f; 做数据分析的朋友们应该都遇到过这样的困扰&#xff1a;面对一堆评价指标和候选方案&#xff0c;到底该怎么科学地做出选择&#xff1f;比如要评选优秀员工&#xff0c;有业绩、考勤、客户评价等多个维度&#xff1b;或者要选择供应商&a…...

【2026年最新600套毕设项目分享】springboot柒月仓库管理系统(14280)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...