C++:inline关键字nullptr
inline关键字
- C中inline使用关键点强调
(1)inline是一种“用于实现的关键字”,而不是一种“用于声明的关键字”,所以关键字 inline 必须与函数定义体放在一起,而不是和声明放在一起
(2)如果希望在多个c文件中使用,则inline函数应该定义在h文件中(不需要额外声明);
如果只在一个c文件中使用,则inline函数可以定义在c文件或h文件中(若定义在c文件时可以声明到h文件中去,声明时可以不加inline)
(3)inline函数在项目中可以多次定义,只要函数体完全相同且在一个c文件范围只定义一次
(4)inline只是一种对编译器的建议而不是强制,所以inline函数不一定真被inline
(5)递归函数不应该被声明为inline,超过一定长度(通常是10行)的函数不应该被inline,内含循环的函数不建议被inline
inline 是 C++ 中的一个关键字,用于指定函数应该在调用的地方直接展开(inlining),而不是作为一个普通函数调用。这种技术通常用于提高代码的效率,因为当函数体被内联后,函数调用的开销(如函数寻址和参数传递)会被消除,优化器可以直接使用函数体内的代码。
当一个函数被声明为 inline,编译器有权决定是否在实际编译期间将函数体插入到调用它的每个位置,这取决于函数的大小、复杂度以及编译器的内联策略。
如果一个函数被定义为 inline,并且编译器未进行内联,编译器会报告错误。
inline 关键字主要用于性能优化,但不是强制性的。对于内联函数,推荐只在小型、无副作用且频繁调用的函数上使用,否则过大的内联可能会增加编译后的代码体积。
- C ++中inline新增的特性
(1)定义在类声明之中的成员函数将自动地成为内联函数,例如如下代码:
class A
{ public:void Foo(int x, int y) { ... } // **自动地成为内联函数,即使没有inline关键字**
}
(2)如果在类中未给出成员函数定义,而又想内联该函数的话,那在类外要加上 inline,否则就认为不是内联的。值得注意的是:如果在类体外定义inline函数,则心须将类定义和成员函数的定义都放在同一个头文件中,否则编译时无法进行置换。
nullptr
- C语言中的NULL
(1)NULL用来标记野指针
(2)NULL在C和C++中的定义为什么不同?因为C++不允许void *隐式转为int *等类型
(3)C++中也可以继续用NULL,但是因为函数重载的引入,NULL传参会带来歧义
C语言中NULL就是(void *)0
C++语言中NULL就是0
int *p = 0;
if(0!=p){//解引用指针p
}
- nullptr如何工作
(1)nullptr传参,表示真正的空指针
(2)nullptr的本质
const class nullptr_t{
public:template<class T> inline operator T*()const {return 0;}template<class C, class T> inline operator T C::*() const {return 0;}
private:void operator&() const;
} nullptr={};
-
思考:NULL和nullptr到底有什么区别
1、NULL是个宏定义,而nullptr是个关键字
2、NULL本质是一个数字0,而nullptr本质是一个指针类型
3、nullptr就是一个可以绕过C++严格的类型检查的NULL,就是因为C++不允许intp = (void)0这样,所以才有了nullptr
I -
nullptr的评价
(1)C++11开始可用,注意版本要求
(2)实践中在判断野指针时很多人还是喜欢if (!p)这样···
(3)nullptr无法解决char *p和int *p这样的传参重载问题,所以还是有点不完美
(4)nullptr不属于任何一种对象指针,但是却可以表示任何类型的空指针
总结
了解inline关键字的使用
理解什么是nullptr
学习记录,侵权联系删除。
来源:朱老师物联网大课堂
相关文章:
C++:inline关键字nullptr
inline关键字 C中inline使用关键点强调 (1)inline是一种“用于实现的关键字”,而不是一种“用于声明的关键字”,所以关键字 inline 必须与函数定义体放在一起,而不是和声明放在一起 (2)如果希望在多个c文件中使用,则inline函数应…...
数字信号处理实验三(IIR数字滤波器设计)
IIR数字滤波器设计(2学时) 要求: 产生一复合信号序列,该序列包含幅度相同的28Hz、50Hz、100Hz、150Hz的单音(单频)信号;其中,50Hz及其谐波为工频干扰(注:采样…...
Why is Kafka fast?(Kafka性能基石)
Kafka概述 Why is kafka fast? 思考一下,当我们在讨论Kafka快的时候我们是在谈论什么呢?What does it even mean that Kafka is fast? 我们是在谈论kafka的低延迟(low latency)还是在讨论吞吐量(through…...
Linux下的SSH详解及Ubuntu教程
前言 SSH(Secure Shell)是一种用于计算机之间安全通信的协议,广泛应用于远程登录、系统管理和文件传输等场景。本文将详细介绍SSH在Linux系统(特别是Ubuntu)下的使用,包括安装、配置、密钥管理和常见应用&…...
MobPush HarmonyOS NEXT 版本集成指南
开发工具:DevEco Studio 集成方式:在线集成 HarmonyOS API支持:> 11 集成前准备 注册账号 使用MobSDK之前,需要先在MobTech官网注册开发者账号,并获取MobTech提供的AppKey和AppSecret,详情可以点击查…...
什么是封装?为什么要封装?
什么是封装? 封装是计算机科学中的一个重要概念,尤其在面向对象编程(OOP)中占据核心地位。封装主要指的是将数据(属性)和对这些数据的操作(方法)组合在一个单元中(我们称…...
远程桌面无法复制粘贴文件到本地怎么办?
远程桌面不能复制粘贴问题 Windows远程桌面为我们提供了随时随地访问文件和数据的便捷途径,大大提升了工作和生活的效率。然而,在使用过程中,我们也可能遇到一些问题。例如,在通过远程桌面传输文件时,常常会出现无法复…...
LeetCode 207. 课程表
思路:这是一道拓扑排序问题,拓扑排序听起来可能有点复杂,但实际上它是个相当直观的概念。想象一下,你有很多事情要做,但有些事情必须在另一些事情完成之后才能开始,就像你得先穿上袜子再穿鞋子 拓扑排序就…...
数据结构历年考研真题对应知识点(树的基本概念)
目录 5.1树的基本概念 5.1.2基本术语 【森林中树的数量、边数和结点数的关系(2016)】 5.1.3树的性质 【树中结点数和度数的关系的应用(2010、2016)】 【指定结点数的三叉树的最小高度分析(2022)】 5.1…...
Pytorch和Tensorflow安装【Win和Linux】
Ubuntu/win安装Pytorch和Tensorflow 说明: 这两种框架的搭建,均基于Anaconda进行搭建。先在系统中安装Anaconda软件。 一、Pytorch的搭建 windows安装 (1)搭建参考官网给的命令,pytorch官网 (2)下载地址:https://download.pytorch.org/whl/torch_stable.html 从上述…...
筑算网基石 创数智未来|锐捷网络闪耀2024 MWC上海
2024年6月26日至28日,全球科技界瞩目的GSMA世界移动大会(MWC 上海)在上海新国际博览中心(SNIEC)盛大召开。作为行业领先的网络解决方案提供商,锐捷网络以“筑算网基石 创数智未来”为主题,带来了…...
T4打卡 学习笔记
所用环境 ● 语言环境:Python3.11 ● 编译器:jupyter notebook ● 深度学习框架:TensorFlow2.16.1 ● 显卡(GPU):NVIDIA GeForce RTX 2070 设置GPU from tensorflow import keras from tensorflow.keras…...
抖音矩阵云混剪系统源码 短视频矩阵营销系统V2(全开源版)
>>>系统简述: 抖音阵营销系统多平台多账号一站式管理,一键发布作品。智能标题,关键词优化,排名查询,混剪生成原创视频,账号分组,意向客户自动采集,智能回复,多…...
zabbix报警机制
zabbix思路流程...
【Matlab】-- 飞蛾扑火优化算法
文章目录 文章目录 01 飞蛾扑火算法介绍02 飞蛾扑火算法伪代码03 基于Matlab的部分飞蛾扑火MFO算法04 参考文献 01 飞蛾扑火算法介绍 飞蛾扑火算法(Moth-Flame Optimization,MFO)是一种基于自然界飞蛾行为的群体智能优化算法。该算法由 Sey…...
全面体验ONLYOFFICE 8.1版本桌面编辑器
ONLYOFFICE官网 在当今的数字化办公环境中,选择合适的文档处理工具对于提升工作效率和团队协作至关重要。ONLYOFFICE 8.1版本桌面编辑器,作为一款集成了多项先进功能的办公软件,为用户提供了全新的办公体验。今天,我们将深入探索…...
建议csdn赶紧将未经作者同意擅自锁住收费的文章全部解锁,别逼我用极端手段让你们就范
前两天我偶然发现csdn竟然将我以前发表的很多文章锁住向读者收费才让看。 csdn这种无耻行径往小了说是侵犯了作者的版权著作权,往大了说这是在打击我国IT领域未来的发展,因为每一个做过编程工作的人都知道,任何一个程序员的学习成长过程都少不…...
Pycharm一些问题解决办法
研究生期间遇到关于Pycharm一些问题报错以及解决办法的汇总 ModuleNotFoundError: No module named sklearn’ 安装机器学习库,需要注意报错的sklearn是scikit-learn缩写。 pip install scikit-learnPyCharm 导包提示 unresolved reference 描述:模块…...
ONLYOFFICE 桌面编辑器 8.1 发布:全新 PDF 编辑器、幻灯片版式、增强 RTL 支持及更多本地化选项
目录 什么是ONLYOFFICE? ONLYOFFICE 主要特点包括: 官网信息: 1. 功能齐全的 PDF 编辑器 1.1 编辑 PDF 文本 1.2 插入和修改对象 1.3 创建和填写表单 2. 幻灯片版式功能 2.1 快速应用幻灯片版式 2.2 动画窗格的改进 3. 文档编辑、…...
Linux高并发服务器开发(六)线程
文章目录 1. 前言2 线程相关操作3 线程的创建4 进程数据段共享和回收5 线程分离6 线程退出和取消7 线程属性(了解)8 资源竞争9 互斥锁9.1 同步与互斥9.2 互斥锁 10 死锁11 读写锁12 条件变量13 生产者消费者模型14 信号量15 哲学家就餐 1. 前言 进程是C…...
腾讯小龙虾使用指南
腾讯小龙虾使用指南腾讯小龙虾是一款集成了多种实用功能的工具,广泛应用于数据分析、自动化处理和团队协作等领域。以下指南将详细介绍其核心功能、操作方法和最佳实践。安装与配置下载腾讯小龙虾的安装包,支持Windows、Mac和Linux系统。运行安装程序后&…...
探秘AI应用架构师的企业数据价值挖掘宝藏
探秘AI应用架构师的企业数据价值挖掘宝藏 一、引言 (Introduction) 钩子 (The Hook) 在当今数字化浪潮席卷的时代,企业犹如置身数据的汪洋大海之中。据统计,全球每天产生的数据量高达数十亿TB。想象一下,企业每天收集的海量客户信息、业务交易…...
5V低压开环FOC驱动器:低成本实现微型电机流畅控制
1. 5V低压开环FOC驱动器的核心价值 对于很多电子爱好者和小型项目开发者来说,控制微型电机常常会遇到两个难题:要么控制方案太贵,要么效果不够理想。我自己在开发桌面旋转展示台时就深有体会——市面上的驱动器要么价格高昂,要么体…...
零配置部署!VoxCPM-1.5-WEBUI让语音合成变得像上网一样简单
零配置部署!VoxCPM-1.5-WEBUI让语音合成变得像上网一样简单 你是否曾为视频配音找不到合适的声音而烦恼?是否想过制作有声读物却苦于录音设备和时间成本?或者,你只是想体验一下,让AI用你喜欢的音色为你朗读一段文字&a…...
彩灯广告屏PLC控制S7-200程序:包含后发送产品梯形图、接线图原理图及IO分配与组态画面详解
彩灯广告屏的PLC控制S7-200程序 程序 我们主要的后发送的产品有,带解释的梯形图接线图原理图图纸,io分配,组态画面上周刚帮客户搞定了一套户外彩灯广告屏的PLC控制项目,用的还是经典的S7-200,本来以为老架构玩不出花…...
FLUX.1-dev镜像免配置部署:5分钟启动影院级Text-to-Image服务
FLUX.1-dev镜像免配置部署:5分钟启动影院级Text-to-Image服务 想体验一下“所见即所得”的顶级AI绘画吗?今天,我们一起来部署一个开箱即用的FLUX.1-dev旗舰版镜像。它集成了当前开源界最强的文本生成图像模型之一,并且针对24GB显…...
VMware虚拟机体验FLUX.1:Windows系统免环境配置方案
VMware虚拟机体验FLUX.1:Windows系统免环境配置方案 想快速体验最新的AI绘画技术却苦于环境配置?FLUX.1作为当前最强的开源文生图模型之一,让很多Windows用户望而却步。本文介绍一种零门槛的解决方案——通过VMware虚拟机一键体验,…...
OpenClaw语音交互方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF对接语音输入输出模块
OpenClaw语音交互方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF对接语音输入输出模块 1. 为什么需要语音交互能力 去年冬天的一个深夜,我正蜷在沙发上调试一个自动化脚本,突然意识到——当双手被咖啡杯占据时,用语…...
Qwen3.5-35B-A3B-AWQ-4bit镜像免配置优势:无Python依赖冲突,纯净运行环境
Qwen3.5-35B-A3B-AWQ-4bit镜像免配置优势:无Python依赖冲突,纯净运行环境 1. 镜像核心优势 Qwen3.5-35B-A3B-AWQ-4bit镜像最突出的特点是其开箱即用的纯净环境。与传统AI部署方案相比,这个镜像解决了开发者最头疼的Python依赖冲突问题。通过…...
告别数据丢失!GD32串口DMA双缓冲+内存对齐配置避坑指南
GD32串口DMA双缓冲与内存对齐实战:工业级数据零丢失方案 在工业自动化、高速数据采集等场景中,串口通信的稳定性和效率直接关系到整个系统的可靠性。当波特率提升到921600甚至更高时,传统的轮询或中断方式往往难以应对持续的数据流࿰…...
