柳州企业网站制作/百度入口提交
目录
一·命名空间(namespace):
二·cout与cin简述:
三·缺省参数:
四·函数重载:
五·引用:
六·内联函数:
七·c++中的nullptr简述:
一·命名空间(namespace):
namespace ns {int t = 5;
}//习惯写法:namespace+名字,注:末尾无;
这里相当于命名空间域;访问的时候要ns::+内部的量
对于c++域的理解:可分为四大域:函数局部域,全局域,命名空间域,类域。
其中前两个影响编译逻辑和生命周期,后两者不影响。
对于命名空间特点:
首先它是可以嵌套的:
namespace ns {int i = 10;int a = 10;namespace ne {int a = 2;//命名空间的嵌套}
}
这时如果访问ne内的a:可以ns::ne::a;或者可以不完全展开即 using namespace ns::ne。
还有一个就是多文件定义同一个命名空间它会自动合并如:
在头文件中定义一个ns命名空间,在cpp中也存在ns命名空间,同时在cpp调用就可以用到头文件中的ns。
对于standard 命名空间,在iostream库里存在的cin cout 就定义在std这个命名空间里。
二·cout与cin简述:
cin输入的数据自动识别为字符型,cout输出也是类同。
前者配合>>后者配合<<,由于是二元操作符,故只能是两个操作数即里面要么是变量自动识别,要么是字符串。
结合endl(end line ):都是存在于iostream库中的namespace std,故可以对它展开或者std::来使用。
int k= 10;
int e = 0;
int main() {std::cout << "k是" << k<< endl;std::cin >> e >> k;std::cout << "k是" << k << endl;std::cout << "e是" << e << endl;}
为了提高io效率,可以在程序中加入:
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
三·缺省参数:
顾名思义,就是对于函数有的参数没有的时候可以去固定值,也可以输入:
大致就是要从函数所有参数的右边开始缺省,到左边,但是不能跳跃,当传参的时候省略的可传可不传。
using namespace std;
namespace hs {int Func(int a, int b, int c = 10) {return a + b + c;}}
#if 0
int main() {cout << hs::Func(1, 2) << endl;}
#endif
这里由于为给传参,故用默认的即输出13。
四·函数重载:
即重载在同一作用域下,参数个数不同或者类型不同而函数名相同可以构成重载。通过调用函数的时候传参个数或者类型来取决调用哪个函数。
如:
using namespace std;
namespace hs {int Func(int a, int b, int c = 10) {return a + b + c;}double Func(double a, int b, int c = 11) {return a + b + c;}
}
#if 0
int main() {cout << hs::Func(1.1, 2) << endl;}
#endif
这里调用的就是double类型的Func。(参数类型不同)
using namespace std;
namespace hs {int Func(int a, int b) {return a + b ;}int Func(int a, int b, int c = 11) {return a + b + c;}
}
#if 0
int main() {cout << hs::Func(1, 2) << endl;}
#endif
这里调用的就是第一个Func。(参数个数不同),当然,也可以是参数顺序不同等等。
而函数重载是为了能调用的时候根据输入区分开不同的函数,故当只有返回值不同时不能作为重载条件:
void fxx()
{}int fxx()
{return 0;
}
上面这样当调用的时候编译器无法区分。
void f1 ()
{
cout << "f()" << endl;
}
void f1 ( int a = 10)
{
cout << "f(int a)" << endl;
}//由于参数是不同的,可以构成重载,但是调用的时候如果不输入,编译器无法区分调哪一个。
五·引用:
即类型&引⽤别名=引⽤对象
相当于给它取了一个新的名字,但还是同一块内存区域,即地址不变,可以理解为改变的时候类似于指针操作。
因此就可以换一种方式交换两个数:
namespace yy {int c = 10;int& b = c;namespace jh {int m = 1;int n = 2;void swap(int& a, int& b) {int tmp = a;a = b;b = tmp;}}}
using namespace yy::jh;
#if 0
int main() {cin >> yy::c;cout << &yy::b <<'\n'<< & yy::c << endl;cout << m <<" "<< n << endl;swap(m, n);cout << m << " " << n << endl;
}
#endif
这里通过这个引用把m n的值交换了,但m n这块地址没有变,通过m n找到对应的地址把里面的数据改变。(因为a,b是m n的别名故改变a b即改变m n) 。
这里注意一旦引用实体,不能再引用其他:
int main() {int a = 10;int& b = a;int d = 11;b = d;cout << "b" <<&b<<" "<<"a" << &a << " " << "d" << &d << endl;return 0;
}
这里可以看出,a b还是同一块地址,b指向的地址里数据只是对d数据的一次拷贝,而不是让b这个实体再次引用d。
const引用:对于权限引用:范围可以缩小,可以等同,但不能放大:
即:
const int a=10;
const int &b=a;//等同int c=10;
const int& d=c;//缩小
这里虽然地址是同一个,但访问权限不同。
再看着一个例子:
const int a=10;
int d=a;//这里并非扩大访问,只是把a值copy给d,两者地址不同
下面引出临对象:所谓临时对象就是编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象。
而当在c++中经常会出现,那么把它就要当成常性对待,不可修改故用const修饰。
int a=10;int b=1;
const int &c=(a+b);
//这里a+b就是临时对象
再比如隐式类型转化出现的临时对象:
double d = 3.14;
int i = d;
const int& ra = d;
cout << i << " " << ra << endl;
六·内联函数:
即用inline修饰的函数,设计出来代替宏:
而宏:采用直接替换,不开辟空间,但效率慢。
普通函数:开辟多余空间,即建立栈帧,效率高。
而内联函数结合了这两点:
即当使用内联函数,如果遇到短小函数,不复杂的则编译器按照宏的方式去直接替换;但是遇到比如有递归等,就会按照函数方式直接展开建立栈帧去执行如:
namespace nl{inline int add(int& a, int &b) {return a + b;}inline int Add(int a, int b) {if (a + b > 10) {return a + b;}return Add(a+3,b+3)+1;}
}
int main() {int m = 1, n = 2;cout << nl::add(m, n) << endl;//这里由于短小函数,故采用类似宏的直接替换。cout << nl::Add(m, n) << endl;//这里由于出现了递归故采用直接展开即开辟一定空间。return 0;
}
再如c++库里面swap函数就用的inline修饰的内联函数;
适用范围:频繁调用的短小函数(非递归)。
七·c++中的nullptr简述:
C++11中引⼊nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的字⾯量,它可以转换 成任意其他类型的指针类型。使⽤nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被 隐式地转换为指针类型,⽽不能被转换为整数类型。类似c中的NULL。
void f(int x)
{cout << "f(int x)" << endl;
}
void f(int* ptr)
{cout << "f(int* ptr)" << endl;
}int main() {f(0);f(NULL);f(nullptr);return 0;}
这里对于c语言可能NULL可以这样,但是c++会直接识别为0;故在这里c++对空指针用nullptr。
相关文章:

☺初识c++(语法篇)☺
目录 一命名空间(namespace): 二cout与cin简述: 三缺省参数: 四函数重载: 五引用: 六内联函数: 七c中的nullptr简述: 一命名空间(namespace)࿱…...

process.env 管理 Vue 项目的环境变量(Vue项目中环境变量的配置及调用)
简述:在构建 Vue 应用时,管理配置是开发中的一个重要部分。不同的环境(如开发、测试和生产)往往需要不同的配置,例如 API、 基础 URL、第三方服务的密钥等。使用环境变量可以帮助我们更好地管理这些配置。这里将介绍如…...

算法工程师第六天(● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结 )
参考文献 代码随想录 一、四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#…...

笔记:Newtonsoft.Json 自定义一个根据typeconverter转换的JsonConverter
在 Newtonsoft.Json 中创建一个根据 TypeConverter 转换的 JsonConverter 允许你在序列化和反序列化过程中利用 .NET 的 TypeConverter 机制。这种方式特别有用,当你想要为不直接支持 JSON 序列化的类型提供自定义的序列化逻辑时,比如第三方库中的类型或…...

第241题| 确定极限中参数问题 | 武忠祥老师每日一题
解题思路:确定极限中的参数的方法是求这个极限;求极限根据类型选方法。 形可以用到三种方法:洛必达,等价,泰勒。 先观察题目,将看成一个整体,同时,并令,整理之后如下: 这里也要想办…...

线程池【开发实践】
文章目录 一、为什么要用线程池1.1 单线程的问题1.2 手动创建多线程的问题1.3 线程池的作用(优点)1.4 线程池的使用场景 二、线程池的基础知识2.1 线程池的核心组件2.2 JUC中的线程池架构2.3 线程池的配置参数2.4 线程池常见的拒绝策略(可自定…...

论文辅助笔记:ST-LLM
1 时间嵌入 2 PFA(Partial Frozen Architecture) 3 ST_LLM 3.1 初始化 3.2 forward...

加入运动健康数据开放平台,共赢鸿蒙未来
HarmonyOS SDK运动健康服务(Health Service Kit)是为华为生态应用打造的基于华为帐号和用户授权的运动健康数据开放平台。在获取用户授权后,开发者可以使用运动健康服务提供的开放能力获取运动健康数据,基于多种类型数据构建运动健…...

企业化运维(7)_Zabbix企业级监控平台
官网:Zabbix :: The Enterprise-Class Open Source Network Monitoring Solution ###1.Zabbix部署### (1)zabbix安装 安装源 修改安装路径为清华镜像 [rootserver1 zabbix]# cd /etc/yum.repos.d/ [rootserver1 yum.repos.d]# vim zabbix.r…...

CTF php RCE (一)
0x01 引言 首先进入题目 应该是大部分都是一段白盒PHP审计,然后我们为了命令执行,绕过或者是钻空子等等操作,来拿到flag 0x02 基础 0x01 传参方式 这里有两个工具,hackbar和burpsuite,这两个工具非常实用 大家可以自己Googl…...

Proteus + Keil单片机仿真教程(五)多位LED数码管的静态显示
Proteus + Keil单片机仿真教程(五)多位LED数码管 上一章节讲解了单个数码管的静态和动态显示,这一章节将对多个数码管的静态显示进行学习,本章节主要难点: 1.锁存器的理解和使用; 2.多个数码管的接线封装方式; 3.Proteus 快速接头的使用。 第一个多位数码管示例 元件…...

【Linux】网络新兵连
欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 引言 在上一篇博客中,我们简单的介绍了一些Linux网络一些比较基本的概念。本篇博客我们将开始正式学习Linux网络套接字的内容,那么我们开始吧! 1.网络中的地址管理 大家一…...

基于STM32的智能加湿器
1.简介 基于STM32的加湿器发展前景非常乐观,这主要得益于其在技术、市场需求、应用场景以及政策支持等多方面的优势。STM32微控制器具备强大的处理能力和丰富的外设接口,能够实现精确的湿度监测和智能化控制。基于STM32的加湿器可以根据环境湿度自动调节…...

ubuntu 如何解压tar
在Ubuntu中解压.tar文件,可以使用tar命令。以下是解压.tar文件的命令: tar -xvf file.tar 解释: x 表示解压 v 表示显示过程中的详细信息(可选) f 表示后面跟文件名 这将在当前目录下解压file.tar文件的内容。如果…...

C++ 算法——二分查找
如果要你在一个升序序列中查找一个值的位置,你是否还会傻乎乎的用下面这个 O ( n ) \mathcal O(n) O(n) 的代码暴力查找,如果是,我告诉你,其实根本不用这么做。 int find(int a[],int n,int k) {for(int i0;i<n;i) if(a[i]k)…...

【自动驾驶仿真在做什么——初学者总结(陆续补充)】
文章目录 基础概念自动驾驶级别再稍提一下ODD是什么? 自动驾驶仿真分类软件在环仿真硬件仿真 仿真究竟难在哪?关于lidar和radar区别一些名词解释 最近也是学习自动驾驶仿真相关知识,习惯去总结一下,方便自己回顾和总结,…...

探索HTML5的设计原则:引领Web开发的未来方向
随着互联网的飞速发展,HTML5作为Web技术的核心标准之一,不仅极大地丰富了网页的表现力和交互性,还推动了Web应用向更加动态、高效、安全的方向迈进。HTML5的设计原则,体现了对用户体验、内容可访问性、跨平台兼容性以及未来可扩展…...

力扣喜刷刷--day1
1.无重复字符的最长子串 知识点:滑动窗口 基本概念 窗口:窗口是一个连续的子序列,可以是固定长度或可变长度。滑动:窗口在数据序列上移动,可以是向左或向右。边界:窗口的起始和结束位置。 应用场景 字符…...

配置linux的yum镜像为阿里镜像源
1.备份当前的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base.repo 到/etc/yum.repos.d wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 3.清空并生成缓存 yum clean …...

react使用markdown进行展示
有一些文档非常长,但是又要挨个设置样式,直接用 组件库 - marked 注意文档要放在public下才能读取。但非常方便 import { marked, Renderer } from "marked".....const [html, setHtml] useState<any>("")const renderer:…...

实时温湿度监测系统:Micropython编码ESP32与DHT22模块的无线数据传输与PC端接收项目
实时温湿度监测系统 前言项目目的项目材料项目步骤模拟ESP32接线连接测试搭建PC端ESP32拷录环境对ESP32进行拷录PC端搭建桌面组件本地数据接收桌面小组件部分 实验总结 前言 人生苦短,我用Python。 由于我在日常工作中经常使用Python,因此在进行该项目…...

CloudWatch Logs Insights 详解
CloudWatch Logs Insights 是 AWS 提供的强大日志分析工具,允许您快速、交互式地搜索和分析日志数据。本文将详细介绍使用 CloudWatch Logs Insights 所需的权限、常用查询方法,以及一些实用的查询示例。 1. 所需权限 要使用 CloudWatch Logs Insights,用户需要具备以下 I…...

Jmeter在信息头中设置Bearer与 token 的拼接值
思路:先获取token,将token设置成全局变量,再与Bearer拼接。 第一步:使用提取器将token值提取出来,使用setProperty函数将提取的token值设置成全局变量,在登录请求后面添加BeanShell取样器 或者 BeanShell后…...

C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
目录 一、代码解析: 二、解决方案 1、增加日志记录 2、异步操作 注意事项 3、增加超时机制 4、使用线程池 5、使用信号量或事件 6、监控数据库连接状态 在C#程序操作Sql Server数据库的实际应用中,若异常就会抛出异常,我们还能找到异…...

数据统计与数据分组18-25题(30 天 Pandas 挑战)
数据统计与数据分组 1. 知识点1.18 分箱与统计个数1.19 分组与求和统计1.20 分组获取最小值1.21 分组获取值个数1.22 分组与条件查询1.23 分组与条件查询及获取最大值1.24 分组及自定义函数1.25 分组lambda函数统计 2. 题目2.18 按分类统计薪水(数据统计)…...

Apache Seata应用侧启动过程剖析——注册中心与配置中心模块
本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Apache Seata应用侧启动过程剖析——注册中心与配置中心模块 前言 在Seata的应用侧…...

大话光学原理:1.“实体泛光说”、反射与折射
一、实体泛光说 在古希腊,那些喜好沉思的智者们中,曾流传着一个奇妙的设想:他们认为,我们的眼睛仿佛伸出无数触手般的光线,这些光线能向四面八方延伸,紧紧抓住周围的每一个物体。于是,当我们凝视…...

住宅代理、移动代理和数据中心代理之间的区别
如果您是一名认真的互联网用户,可能需要反复访问某个网站或服务器,可能是为了数据抓取、价格比较、SEO 监控等用例,而不会被 IP 列入黑名单或被 CAPTCHA 阻止。 代理的工作原理是将所有传出数据发送到代理服务器,然后代理服务器将…...

光学传感器图像处理流程(一)
光学传感器图像处理流程(一) 1. 处理流程总览2. 详细处理流程2.1. 图像预处理2.1.1. 降噪处理2.1.2. 薄云处理2.1.3. 阴影处理 2.2. 辐射校正2.2.1. 辐射定标2.2.2. 大气校正2.2.3. 地形校正 2.3. 几何校正2.3.1. 图像配准2.3.2. 几何粗校正2.3.3. 几何精…...

el-table 树状表格查询符合条件的数据
需要对el-table的树状表格根据输入机构名称,筛选出符合条件的数据,可用如下方法: 页面内容如下: <el-input v-model"ogeName" placeholder"请输入机构名称"><el-table :data"list" row…...