1.25号c++

news2024/11/17 17:31:16

1.引用

引用就是给变量起别名

格式:

数据类型 &引用名 = 同类型的变量名 (& 引用符号)

eg: int a = 10; int &b = a;     //b引用a,或者给a变量取个别名叫b

    int *p;  //指针可以先定义 后指向
    p = &a;
    
    //int &bb; 引用必须定义的同时初始化 指定目标
    //bb = b;
    
    p = &b;
    
    //int &aa = b; 引用一旦指向目标,就不可以改变了

数组的引用

给数组起别名

    int a[5] = {1,2,3,4,5};

    //数组指针
    int (*p)[5] = &a;

    //数组引用
    int (&b)[5] = a;

    cout << a[3] << endl;
    cout << b[3] << endl; // b[3] == a[3]

    b[4] = 99;
    cout << a[4] << endl;

函数的引用

给函数起别名

int max(int x, int y)

{ return x>y?x:y; }

//函数引用

int (&fun)(int, int) = max;

cout << fun(6,8) << endl;

// fun(6,8) == max(6, 8)

结构体中有引用成员

当结构体中有引用成员的时候,使用该结构体类型定义变量时,必须定义的时候初始化,否则报错。

struct student

{         int &id;

          string name;

};

int num=1;

struct student stu={num,"张三"};//当结构体有引用成员时,必须定义的时候初始化

当引用作为函数的返回值

要求返回的变量的生命周期要长

静态局部变量或者堆区申请的变量

int &fun() // int &num = num
{
    static int num = 10;
    return num;
}


int main()
{
    int a;


    a = fun(); // a = num
    cout << a << endl;

传值、传址、传引用(重点)

传值一定不会改变目标的值。

传址可能会,可能不会。

传引用可能会,可能不会。

void fun(int a, int b) //int a = a
{
    a++;
    b++;
}
void fun2(int *a, int *b)//int *a = &a
{
    *a++;
    *b++;
}
void fun3(int &a, int &b)// int &a = a
{
    int c = a;
}
int main()
{
    int a = 10, b = 20;
    fun(a,b);//值传递
    cout << "main: a = " << a << " b = " << b << endl;

    fun2(&a, &b);//址传递
    cout << "main: a = " << a << " b = " << b << endl;

    fun3(a,b);//引用传递
    cout << "main: a = " << a << " b = " << b << endl;

指针与引用的区别(重点)

指针:存放地址变量。

引用:变量的别名。

1.指针可以先定义后指向,引用必须定义的时候同时初始化。

2.指针后期可以改变指向,引用一旦指定目标就无法改变。

3.指针要申请空间存放指针变量的地址,引用不需要。

4.有指针数组没有引用数组(引用不是数据类型)。

5.有二级指针没有二级引用(引用不是数据类型)。

2.const

修饰变量时,表示该变量是常变量,其值不能被修改

int a = 10;
int const b = 20; // const int b = 20  
int *pa = &a; //合法
int *pb = &b; //不合法
int const *pbb = &b; //可以  (int cosnt * const p)

int a = 10;
int const b = 20;
int &ppa = a; //合法
int &ppb = b; //不合法
int const &pppb = b; //合法  int const &pppb ---->常引用

3.函数重载

c++中,在同一作用域下,两个以上函数,取相同函数名,其形参的个数或者类型不同,编译器会根据实参的类型或个数,自动调用相应函数,这就是函数重载。

注意:不以返回值作为标准

 

默认参数的函数定义和使用


void fun(string name = "zhangsan")
{
    cout << name << endl;
}

哑元(了解)

定义函数的时候,只定义类型,不定义形参名,在函数中也不使用。

作用:没有作用,占位

内联函数

内联函数就是在函数定义前 加 inline 关键字。

要求:

1> 内联函数体积要小

2> 一般代码不超过5行

3> 不能有复杂的语句,比如循环,递归

作用:提高代码的运行效率

内联函数和带参宏替换的区别:

1> 内联函数是函数调用,带参宏替换是替换

2> 内联函数是在编译的时候展开,带参宏替换是在预处理展开。

4.C++中的结构体

1> C语言中的结构体在C++中依然适用。

2> C++中的结构体可以有函数,而C语言不可以。

3> C++中的结构体可以给变量赋初始值,而C语言中不可以。

4> C++中的结构体在定义结构体变量时,可以省略关键字struct不写,而C语言中不可以。

5> C++中的结构体中有访问权限,而C语言中的结构体没有访问权限。

6> C++中的结构体有特殊的成员函数,而C语言中的结构体没有。

7> C++中的结构体存在继承,而C语言中的结构体没有继承。

C++中的结构名一般首字母大写。

C++结构体的默认访问权限是共有的,--->public

访问权限:private: 私有权限 protected:保护权限 public:共有权限

5.类

一般又有变量又有函数的构造数据类型,用类来完成,C++中的类是由C++中的结构体演变而来,只是默认访问权限和默认继承方式以及关键字不同。

默认访问权限: private 私有的

默认继承方式:private 私有的

关键字:class

类内都可以成为成员,成员可以分为数据成员、成员函数

格式

class 类名

{

 public:

        公共的数据成员、成员函数

protected:

        受保护的数据成员、成员函数

private:

        私有的数据成员、成员函数

};

访问权限的介绍

public: 该权限是公共权限,表示该权限下的属性(变量)、方法(函数),可以在类内、子类、类外被访问。

protected: 该权限是受保护权限,表该权限下的属性(变量)、方法(函数),可以在类内、子类被访问,类外不可以被访问。

private: 该权限是私有权限,表示该权限下的属性(变量)、方法(函数),只能在类内被访问,子类、类外不可以被访问。

封装

类的三大属性:封装、继承、多态

封装就是将数据和对数据的处理捆绑在一起的过程,称为封装。

属性(变量)+ 方法(函数)

作业

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

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

相关文章

谷歌推出 AutoRT 机器人代理大规模编排的具体基础模型,远程操作和收集 77,000 个机器人事件

演示 AutoRT 向多个建筑物中的20多个机器人提出指令&#xff0c;并通过远程操作和自主机器人策略收集77,000个真实的机器人事件。实验表明&#xff0c;AutoRT 收集的此类“野外”数据明显更加多样化&#xff0c;并且 AutoRT 使用 LLMs 允许遵循能够符合人类偏好的数据收集机器人…

Jenkins全局工具配置

目录 Jenkins全局工具全局工具配置Settings 文件配置Maven配置JDK配置Git配置 Jenkins全局工具 我们在安装了Jenkins之后&#xff0c;就可以开始使用Jenkins来进行一些自动化构建发布工作&#xff0c;但是开始之前我们还需要进行全局工具的配置&#xff0c;Jenkins全局工具配置…

QT入门篇---无门槛学习

1.1 什么是 Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式&#xff0c;开发者可以通过简单的拖拽和组合来实现复杂的…

【深度学习】【注意力机制】【自然语言处理】【图像识别】深度学习中的注意力机制详解、self-attention

1、深度学习的输入 无论是我们的语言处理、还是图像处理等&#xff0c;我们的输入都可以看作是一个向量。通过Model最终输出结果。这里&#xff0c;我们的vector大小是不会改变的。 然而&#xff0c;我们有可能会遇到这样的情况&#xff1a; 输入的sequence的长度是不定的怎…

Idea上操作Git回退本地版本,怎么样保留已修改的文件,回退本地版本的四种方式代表什么?

Git的基本概念:Git是一个版本控制系统,用于管理代码的变更历史记录。核心概念包括仓库、分支、提交和合并。 1、可以帮助开发者合并开发的代码 2、如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突 3、代码文件版本管理 问题描述 当我们使用git提交代码…

Hive3.1.3基础学习

文章目录 一、Hive入门与安装1、Hive入门1.1 简介1.2 Hive架构原理 2、Hive安装2.1 安装地址2.2 Hive最小化安装(测试用)2.3 MySQL安装2.4 配置Hive元数据存储到MySQL2.5 Hive服务部署2.6 Hive服务启动脚本(了解) 3、Hive使用技巧3.1 Hive常用交互命令3.2 Hive参数配置方式3.3 …

蓝桥杯(C++ 左移右移 买二增一 松散子序列 填充 有奖问答 更小的数 )

目录 左移右移 思路&#xff1a; 代码&#xff1a; 买二增一 思路&#xff1a; 代码&#xff1a; 松散子序列 思路&#xff1a; 代码&#xff1a; 填充 思路&#xff1a; 代码 &#xff1a; 有奖问答 思路&#xff1a; 代码&#xff1a; 更小的数 思路&#…

【快影】怎么制作卡拉OK字幕

您好&#xff0c;您添加了字幕之后可以添加动画&#xff0c;选择卡拉OK&#xff0c;其中 卡拉OK1是支持修改颜色的&#xff0c;卡拉OK2只支持修改文字的底色。

OpenCV使用基础、技巧

OpenCV概述与安装 视觉概述 人类的视觉能够很轻易地从图像中识别出内容。但是&#xff0c;计算机视觉不会像人类视觉那样能够对图像进行感知和识别&#xff0c;更不会自动控制焦距和光圈&#xff0c;而是把图像解析为按照栅格状排列的数字。 这些按照栅格状排列的数字包含大量…

Java中Integer(127)==Integer(127)为True,Integer(128)==Integer(128)却为False,这是为什么?

文章目录 1.前言2. 源码解析3.总结 1.前言 相信大家职业生涯中或多或少的碰到过Java比较变态的笔试题&#xff0c;下面这道题目大家应该不陌生&#xff1a; Integer i 127; Integer j 127;Integer m 128; Integer n 128;System.out.println(i j); // 输出为 true System.o…

华为数通方向HCIP-DataCom H12-831题库(判断题:121-140)

第121题 BGP/MPLS IP VPN内层采用MP-BGP分配的标签区分不同的VPN实例,外层可采用多种隧道类型,例如GRE隧道。 正确 错误 答案: 错误 解析: VPN业务的转发需要隧道来承载,隧道类型包括GRE隧道、LSP隧道、TE隧道(即CR-LSP)。 如果网络边缘的PE设备具备MPLS功能,但骨干网核…

Deepin基本环境查看(四)【硬盘/分区、文件系统、硬连接/软连接】

Linux操作系统(Deepin、Ubuntu&#xff09;操作系统中&#xff0c;硬盘分区的管理与Windows操作系统不同&#xff1b; 在Linux系统中维护着一个统一的文件目录体系&#xff0c;而硬盘和分区是以资源的形式由操作系统挂接和调度&#xff1b;此外Linux系统中连接&#xff08;硬连…

UE创建数据表格

创建一个数据表格需要行结构 继承自FTableRowBase的一个子类 效果 如何使用它 在蓝图中给C该类型的指针变量选用 UDataTable类型的 FindRow()函数可查询并返回对应行的行结构 FTableRowBase GetAllRows()函数可以获得该数据表的所有行、

全面解析开源大语言模型:BLOOM

大型语言模型 &#xff08;LLM&#xff09; 的兴起一直是自然语言处理 &#xff08;NLP&#xff09; 领域的一个决定性趋势&#xff0c;导致它们在各种应用程序中的广泛采用。然而&#xff0c;这种进步往往是排他性的&#xff0c;大多数由资源丰富的组织开发的 LLM 仍然无法向公…

手动搭建koa+ts项目框架(apidoc文档篇)

文章目录 一、安装apidoc工具二、使用1、项目根目录新建apidoc.json2、定义接口路由上方注解对应信息3、配置静态文件访问目录4、生成api文档如有启发&#xff0c;可点赞收藏哟~ 一、安装apidoc工具 全局安装 npm i apidoc -g查看是否安装成功 apidoc -v二、使用 1、项目根…

面向社交网络语言隐写分析

论文&#xff1a;Linguistic Steganalysis Toward Social Network 发表在&#xff1a;IEEE Transactions on Information Forensics & Security是网络与信息安全领域的国际两大顶级期刊之一&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的A类期刊&#xff0c…

第一篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:从helloworld开始理解鸿蒙开发ArkTS编程思路

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例系列 短博文目录一、前言二、初步解读鸿蒙的helloworld三、进一步深入解读理解 系列短博文目录 鸿蒙开发技术点案例示例系列 短博文目录 一、前言 从掰碎了揉烂了详细注释解读helloworld开始&#xff0c;理解Ark…

matlab appdesigner系列-容器2-选项卡组

所谓容器&#xff0c;就是可以放置常有组件的空间&#xff0c;类似一种画布。默认背景画布就是一张画布&#xff0c;选项卡组&#xff0c;可以同时增加好几个画布空间&#xff0c;以满足不的组件放置需求。 1&#xff09;将选项卡组拖拽到画布上 2&#xff09;将选项卡组拉大背…

linux-centos服务器离线安装yapi(包含nodejs、mongodb、yapi、pm2离线安装)

yapi是使用vue框架开发的,借助nodejs 前端直接访问的mongodb数据库,离线安装yapi步骤如下 下载离线安装包 下载地址 https://download.csdn.net/download/qq445829096/88778418 离线安装包先复制到 dev/yapi目录(根据自己习惯自定义目录) node-v12.13.0-linux-x64.tar.xz …

10.多柱状图(MuliBarChart)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7、MAUI 话接上回&#xff08;9.单柱状图&#xff08;SingleBarChart&#xff09;&#xff09;&#xff0c;从单柱拓展到多柱状图。 1.数据设置 private void InitValue(List<BasicSerieDto> dtos){Serie…