【C++】初识C++(下)

news2025/1/14 18:38:19

  👑个人主页:啊Q闻       

🎇收录专栏:《C++》           

 🎉我自会去见我的山

💡感谢阅读,欢迎关注,点赞,收藏,评论💡

前言 

这篇博客是对C++的一个初步认识,这个认识是基于C语言的基础上初识C++,C++部分是对C语言设计不合理的地方进行了优化,今天我们就要学习一下。这篇博客是下半篇,上半篇的链接在【C++】初识C++(上)-CSDN博客,感兴趣的铁子可以去看看哦。

一.引用 

1.初识引用

(1)引用概念

引用不是新定义一个变量,而是给已存在的变量取一个别名,它和它引用的变量共用一块内存空间。

&+引用名==引用实体

需要注意的是:引用类型和引用实体是同种类型。

引用其实类似于C语言中的指针,我们在C语言中学过一个交换函数的实现,当时我们传参用到了指针,在C++中,利用引用也可以实现。所以说引用和指针是类似的。

(2)引用特性

1.引用在定义时必须初始化

2.一个变量可以有多个引用

3.引用一旦引用一个实体,在不能引用其他实体

 1.引用在定义时必须初始化

 2.一个变量可以有多个引用

3.引用一旦引用一个实体,在不能引用其他实体

2.引用辨析

(1)常引用

((1))常引用权限问题

1.如图代码:1-->2属于是权限的放大,这种引用是错误的。

2. 如图代码:1-->2属于权限的缩小,这种引用时正确的。因为2所具有的能力是1本就有的。

3.如图代码:1-->2属于权限的平移,这种引用是正确的。

扩展至指针:指针和引用在权限方面的使用差不多。

1.如图代码:1-->2属于权限的放大,这种使用是错误的。

2.如图代码:1-->2属于权限的缩小。

3.如图代码:1-->2属于权限的平移


  还有一些计算是会用到临时变量,其也隐藏着引用权限的问题。

1.类型转换

2.表达式计算

((2))常引用增减

对于引用变量名的修改会直接影响到引用实体。

但是对常引用的增减是错误的,因为常引用是不可以修改的,其用了const修饰。

(2)指针和引用的比较

1.指针是通过传值,而传值是用值作为参数或者返回类型,效率是很低的,所以,两者相比较,传引用具有优势。

2.在语法概念上,引用就是一个别名,没有独立的空间,和其的引用实体共用一块空间。

   在底层实现上,引用是有空间的,因为引用是按指针方式实现的。

3.引用在定义时必须初始化,但是指针不需要。

4.引用在初始化时引用一个实体后,就不能在引用其他实体了,指针可以在任何时刻指向任何一个同类型的实体。

5.没有NULL引用,但是有NULL指针。

6.在利用sizeof计算大小时:引用结果为引用类型的大小,指针的大小则只与平台有关。

7.自加即引用的实体加1,而指针自加是向后偏移一个类型的大小。

8.有多级指针,没有多级引用。

二.内联函数

内联函数就是以inline修饰的函数,编译时C++会在内联函数处展开,但是不会调用函数栈帧,从而提高了内联函数的效率。

1.inline是一种以空间换时间的做法,在编译阶段,会将函数体替换成函数调用,所以其会使目标文件变大。

2.inline对于编译器来说,它只是向编译器提出了一种请求,接不接受的权利取决于编译器,如果函数规模较大,或者频繁调用,或者是递归,编译器就会忽略inline的请求。

3.inline不建议声明和定义分离,两者分离容易导致连接错误,因为inline会被展开,内联函数没有地址,链接就会找不到。所以我们可以直接在.h文件中声明某个函数时,直接将其定义。

 三.auto关键字

1.初识auto

1.auto的作用是其可以替代写比较长的类型,有些类似于typedef的作用。但是我觉得auto更为方便,其会自动对应成相应的类型。

2.auto定义变量时要初始化,否则编译不允许通过。

2.auto的使用细则

1.用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须加&

2.在同一行定义多个变量时,这些变量必须是相同的类型,因为编译器只会对第一个类型进行推导,然后用推导出的类型定义其他变量。

3.(1)auto不能作为函数的参数 

3.(2)auto不能直接用来声明数组

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

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

相关文章

JavaEE——Spring Boot入门

目录 📚 JavaEE——Spring Boot入门 🔧 1. 新建Spring Boot项目 🛠 2. 添加pom依赖 📝 3. 添加application.yml文件 📂 4. 创建Dao层 🔧 5. 创建Service层 🖥️ 6. 创建Controller层及HT…

【刷题篇】动态规划-01背包问题(十)

文章目录 1、01背包2、分割等和子集3、目标和4、最后一块石头的重量 II 1、01背包 #include <iostream> #include<vector> using namespace std;int main() {int n,v;cin>>n>>v;vector<int> Weight(n1);vector<int> Value(n1);vector<i…

注意力机制:SENet详解

SENet&#xff08;Squeeze-and-Excitation Networks&#xff09;是2017年提出的一种经典的通道注意力机制&#xff0c;这种注意力可以让网络更加专注于一些重要的featuremap&#xff0c;它通过对特征通道间的相关性进行建模&#xff0c;把重要的特征图进行强化来提升模型的性能…

Mysql的索引与事务理解

目录 一、Mysql索引 1、索引的概念 2、索引的特点 3、索引使用场景 4、Mysql有关索引的操作 &#xff08;1&#xff09;查询表具有的索引 &#xff08;2&#xff09;增加索引 &#xff08;3&#xff09;删除索引 5、索引实现原理 &#xff08;1&#xff09;B树 &…

详细解析什么是期权交易的获利方法

期权交易的获利方法 在期权交易之前进行充分的准备工作和风险评估是至关重要的。其中行情结构、策略方法、预期收益和风险评估&#xff0c;是期权交易成功的关键要素。它们能帮助我们更好地制定交易计划&#xff0c;控制风险&#xff0c;并追求稳定的利润。以下是对这四点的详…

深入理解冯诺依曼体系结构

文章目录 冯诺依曼体系结构概念冯诺依曼体系结构的优势冯诺依曼体系结构的现实体现 冯诺依曼体系结构概念 冯诺依曼体系结构也称普林斯顿结构&#xff0c;是现代计算机发展的基础。它的主要特点是“程序存储&#xff0c;共享数据&#xff0c;顺序执行”&#xff0c;即程序指令和…

Leetcode297_二叉树的序列化与反序列化

1.leetcode原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2.题目描述 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xf…

Python | Leetcode Python题解之第51题N皇后

题目&#xff1a; 题解&#xff1a; class Solution:def solveNQueens(self, n: int) -> List[List[str]]:def generateBoard():board list()for i in range(n):row[queens[i]] "Q"board.append("".join(row))row[queens[i]] "."return b…

浅谈叉车车载电脑的市场现状

叉车的起源 叉车源于美国&#xff0c;兴于日本&#xff0c;虽然中国起步较晚&#xff0c;但是近些年来发展迅速。叉车又称叉式装载车&#xff0c;是对于成件托盘类货物进行装卸、堆垛和短距离运输&#xff0c;实现重物搬运作业的轮式工业车辆。 叉车的分类 叉车分为以上六大类…

webpack3插件CommonChunkPlugin分离vantUI和echarts,问题的webpackJsonp is not defined解决!!!

webpack3插件CommonChunkPlugin分离vantUI和echarts和报错webpackJsonp is not defined的解决 前景&#xff1a;因为项目使用的webpack3开发的场景&#xff0c;打包后的vendor很大&#xff0c;如图显示 如果不做gzip处理的话&#xff0c;大小在2M多&#xff0c;gzip后的大小是…

深入理解操作系统与计算机体系结构

文章目录 操作系统(Operator System)为什么要有操作系统操作系统是如何进行管理的为什么说操作系统是安全&#xff0c;稳定&#xff0c;高效的理解系统调用和库函数 操作系统(Operator System) 概念&#xff1a; 操作系统&#xff08;Operating System&#xff0c;简称OS&…

C++中的数据结构与算法

随处可见的红黑树 一般会用到[key,value]。 例如github中这个例子&#xff0c;第一个是访问网站&#xff0c;第二个是访问次数&#xff0c;但是这个不是静态的&#xff0c;这有个动态排序&#xff0c;并且当我们需要让相应的访问次数加1的时候&#xff0c;我们用红黑树查找的时…

刷题训练之前缀和

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握前缀和算法。 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷题…

Oracle系统参数调整【数据库实例优化系列一】

Oracle实例是:内存组件和相关的后台进程组成。这些内存组件提高了数据库的运行,而后台进程负责管理系统和内存组件。 一、SGA和实例优化 Oracle的SGA是指的系统全局区。sga是数据库运行期间使用的一段公有内存,即数据库用户都可以访问这段内存,包括: 共享池、重做日志缓冲…

分享一些实用的工具

1、amCharts5&#xff1a;模拟航线飞行/业务分布图/k线/数据分析/地图等 网址&#xff1a; JavaScript mapping library: amCharts 5https://www.amcharts.com/javascript-maps/ Demo地址&#xff1a;Chart Demos - amChartshttps://www.amcharts.com/demos/#maps 他分为amC…

Xcode隐私协议适配

1. Privacy manifest files 1.1 简介 自己App或三方SDK&#xff08;通过XCFrameworks|Swift packages|Xcode projects集成的&#xff09;需要包含一个隐私清单文件&#xff08;privacy manifest&#xff09;叫作 PrivacyInfo.xcprivacy。它是一个属性列表&#xff0c;记录了A…

【Hadoop】-HDFS的存储原理[4]

目录 前言 一、fsck命令 1、HDFS副本块数量的配置 2、fsck命令查看文件的副本数 3、block配置 二、NameNode元数据 1、edits文件 2、fsigame文件 3、NameNode元数据管理维护 4、元数据合并控制参数 5、SecondaryNameNode的作用 三、HDFS数据的读写流程 1、数据写入…

2024第十五届蓝桥杯网络安全赛项WriteUp

欢迎关注公众号【Real返璞归真】回复【蓝桥杯2024】获取完整题目附件。 排名 安全知识 错1个选择题&#xff0c;题目说的不清楚&#xff0c;没搞懂题意。肯定不能用eval。错了理论题有点遗憾。 没想到这题前端是要解析json数据&#xff0c;排除CD选了A&#xff0c;结果发现正…

AI大模型日报#0427:阿里智能体“组装工厂”开源、Meta推70M参数SceneScript模型解码真实场景

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: BattleAgent&#xff1a;再现历史事件&#xff0c;对历史战役进行多模态动态模拟&#xff5c;大模型论文摘要: 科技论文摘要&…

百度SDK创建应用地址解析失败问题

在百度SDK的设置里先用IP白名单校验全部都通过&#xff0c;项目上线之后再改就行 0.0.0.0/0