C++学习笔记——day 1

news/2024/9/23 10:16:48/

1. 不能用非const修饰的指针指向const修饰的变量

2. c++中的四种cast

(1)static_cast

        兼容类型之间的进行显式转换

        (1)基本数据类型转化(int 转 double)

        (2)类层次结构中上行转换(子类转父类)

        (3)示例

#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;enum Week
{Sun, Mon, Tue, Wes, Thu, Fri, Sat
};int main()
{enum Week w;int n = 10;w = static_cast<Week>(n);cout << w + 1 << endl;return 0;
}

(2)dynamic_cast

(3)const_cast

(4)reinterpret_cast

3. 内联函数

(1)定义

        C++中的内联函数(Inline Function)是一种用于优化程序性能的机制。通过在函数声明或定义前加上关键字inline,编译器可以将该函数的调用直接替换为函数体的代码,以减少函数调用的开销,特别是在短小、频繁调用的函数中,这种机制可以提高执行效率

(2)示例代码

#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;inline void fun(int *p)
{*p += 1;
};int main()
{int i = 0;fun(&i);cout << i << endl;return 0;
}

(3)注意

        多文件编程中,内敛函数所有的函数体内容最好写在头文件中

        (1)main.cpp

#include <iostream>
#include <cstdio>
#include <cstring>
#include "fun.h"using namespace std;int main()
{int i = 0;fun(&i);cout << i << endl;return 0;
}

        (2)fun.h

#ifndef FUN_H
#define FUN_Hinline void fun(int *p)
{*p += 1;
};#endif // FUN_H

4. 引用传参(变量别名,可以通过函数传参直接操作原变量)

(1)定义

        在C++中,引用传参是一种通过传递变量的引用(即别名)来实现函数参数传递的方式。相比值传递,引用传参允许函数直接操作原始数据,而无需对参数进行复制,因此可以提高性能,特别是在传递大型对象时

(2)作用

        在性能要求高的场景,避免复制开销,允许修改实参,提高内存效率

(3)代码示例

#include <iostream>
#include <cstdio>
#include <cstring>
#include "fun.h"using namespace std;void fun1(int &p)
{++p;
}int main()
{int i = 0;int &ref = i;ref += 1;cout << i << endl;fun1(i);cout << i << endl;return 0;
}

(4)引用和指针的区别

        (1)引用不占空间,指针占8个字节

        (2)引用必须初始化,而指针不必

        (3)引用在被绑定以后,这种绑定关系是不能被拆解的,而指针可以指向其他的空间

5.函数的重载

(1)定义

        c++中函数重载是指在同一个作用域内,可以定义多个具有相同函数名但参数列表不同的函数,编译器通过参数的个数、类型或顺序来区分这些函数,从而选择合适的函数进行调用

(2)代码示例

        (1)参数个数不同

void print(int a);
void print(int a, int b);

        (2)参数类型不同

void print(int a);
void print(double a);

        (3)参数顺序不同

void print(int a, double b);
void print(double a, int b);

(3)函数重载规则

        (1)返回值类型不能作为函数重载的依据,即返回值类型不同但参数列表相同的函数不能构成重载

int add(int a, int b);
double add(int a, int b);  // 错误,不能通过返回值类型区分

        (2)默认参数不能用于区分重载函数

void print(int a);
void print(int a, int b = 0);  // 错误,默认参数导致模糊


http://www.ppmy.cn/news/1523841.html

相关文章

统计上升四元组

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 &#x1f308;C专栏&#xff1a;C 文章目录 1. 题目描述2. 解释3. DP前缀和枚举 1. 题目描…

Redis-基础篇

Redis简单介绍 Redis是一种键值型的NoSql数据库&#xff0c;这里有两个关键字&#xff1a; 键值型NoSql 其中键值型&#xff0c;是指Redis中存储的数据都是以key.value对的形式存储&#xff0c;而value的形式多种多样&#xff0c;可以是字符串.数值.甚至json&#xff1a; 而…

用于完善智能电表设计的 FPGA 到 ASIC 研究

许多嵌入式系统设计首先使用 FPGA 来实现。这可能是为了更快地进行原型设计或提供软件开发平台。有时&#xff0c;生产开始后&#xff0c;FPGA 仍保留在设计中。但通常情况下&#xff0c;计划是将 FPGA&#xff08;或多个 FPGA&#xff09;转换为 ASIC 以进行批量制造。 人们很…

iOS——持久化

iOS的数据存储机制 沙盒机制 应用沙盒文件夹包含了&#xff1a; Application(应用程序包)&#xff1a;包含了所有的资源文件和和可执行文件&#xff0c;上架前经过数字签名&#xff0c;上架后不可修改。 Documents&#xff1a;文档目录&#xff0c;要保存程序生成的数据&…

COD论文笔记 BiRefNet

本质还是一个 U 型编码器解码器结构的分割模型。 我可以考虑将©和(d)结合&#xff0c;即对解码器的输入不进行 patchify,同时在各个阶段引入梯度参考信息 最近的相关工作&#xff0c;中间监督、额外先验(频率&#xff0c;梯度&#xff0c;边缘等)取得不错效果 作者观察到…

Java健康养老智慧相伴养老护理小程序系统源码代办陪诊陪护更安心

健康养老&#xff0c;智慧相伴 —— 养老护理小程序&#xff0c;代办陪诊陪护更安心 &#x1f308;【开篇&#xff1a;智慧养老&#xff0c;新时代的温馨守护】&#x1f308; 在这个快节奏的时代&#xff0c;我们总希望能给予家人更多的关爱与陪伴&#xff0c;尤其是家中的长…

Go语言实战 pdf

这本书更加注重Go 语言的实战技能&#xff0c;Go语言结合了底层系统语言的能力以及现代语言的高级特性&#xff0c;旨在降低构建简单、可靠、高效软件的门槛。本书向读者提供一个专注、全面且符合语言习惯的视角&#xff0c;这是一本不错的Go 语言入门书。 百度网盘分享

pv和pvc自动匹配、自动创建、自动挂载

目录 概念 pv的状态 pvc在请求的过程中支持的权限控制选项 pv的回收策略 Retain 保留 Delete 删除 Recycle 回收 在yaml文件中指定pv的回收策略 静态pv 1. 配置NFS 2. 创建pv 3. 创建pvc 动态pv 动态pv的步骤 1.配置NFS 2.创建角色、赋权、绑定角色 3.创建NFS…