当前位置: 首页 > web >正文

C++ 基础复习

基础复习

  • 1.const引用为什么能引用临时对象
  • 2.内联函数的额外作用
  • 3. nullptr

1.const引用为什么能引用临时对象

临时对象(Temporary Object)是在表达式求值过程中隐式创建的对象,例如:
函数返回非引用类型的值
类型转换(如double d = 10 + 5.5;中的中间结果)
初始化const引用或右值引用

const引用将临时对象的生命周期延长至引用的生命周期结束

2.内联函数的额外作用

类内成员函数默认内联的特殊性​
类内直接定义的成员函数(隐式内联)​除了核心优化作用,还因以下必要性:
​​(1) 解决头文件包含的重复定义问题​
​背景​:类定义通常放在头文件中,若成员函数在类内实现且未内联,多个源文件包含该头文件时,会导致函数重复定义(违反ODR规则)。
​隐式内联的作用​:通过内联声明,允许多个编译单元包含同一函数定义,避免链接错误。

3. nullptr

NULL实际是⼀个宏,在传统的C头⽂件(stddef.h)中,可以看到如下代码:

#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

• C++中NULL可能被定义为字⾯常量0,或者C中被定义为⽆类型指针(void*)的常量。不论采取何种定义,在使⽤空值的指针时,都不可避免的会遇到⼀些⿇烦,(由于C++存在函数重载)本想通过f(NULL)调⽤指针版本的f(int*)函数,但是由于NULL被定义成0,调⽤了f(int x),因此与程序的初衷相悖。f((void*)NULL)只能调用f(void*);
• C++11中引⼊nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的字⾯量,它可以转换
成任意其他类型的指针类型。使⽤nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被
隐式地转换为指针类型,⽽不能被转换为整数类型。

void f(int x)
{cout << "f(int x)" << endl;return;
}
void f(int*x)
{cout << "f(int*x)" << endl;return;
}
int main()
{f(0);f(NULL);f(nullptr);return 0;
}

在这里插入图片描述

http://www.xdnf.cn/news/4504.html

相关文章:

  • 蓝牙L2CAP协议概述
  • 微机控制电液伺服拉扭疲劳试验系统
  • 004 Linux基本指令
  • C语言| 递归求两个数的最大公约数
  • 17.Three.js 光照系统之《LightProbe》详解指南(含 Vue 3示例)
  • 准确--Notepad++ 实用的插件介绍
  • 【论文阅读】HunyuanVideo: A Systematic Framework For Large Video Generative Models
  • Linux系统安装指南
  • vue2中的组件注册
  • Landsat WRS介绍 及 Polygon定位WRS算法
  • WPF MVVM入门系列教程(六、ViewModel案例演示)
  • [Windows] 蓝山看图王 1.0.3.21021
  • JGL021垃圾渗滤液小试实验装置
  • 三、大模型原理:图文解析MoE原理
  • NGINX `ngx_http_charset_module` 字符集声明与编码转换
  • 【CSS】Grid 的 auto-fill 和 auto-fit 内容自适应
  • goland无法debug
  • 做PPT的感想
  • 在IPv6头部中,Next Header字段
  • 基于 ISO 22301 与国产化实践的 BCM 系统菜单设计指南
  • 计算机网络中相比于RIP,路由器动态路由协议OSPF有什么优势?
  • 服务器数据恢复—硬盘坏道导致EqualLogic存储不可用的数据恢复
  • 2023年华为杯研究生数学建模竞赛B题DFT类矩阵的整数分解逼近
  • ActiveMQ 源码剖析:消息存储与通信协议实现(二)
  • 英伟达发布Llama-Nemotron系列新模型,性能超越DeepSeek-R1
  • 初学Python爬虫
  • Spring AI 之 AI核心概念
  • 第十一节:图像处理基础-图像阈值处理
  • ES6入门---第三单元 模块七: Proxy的使用+Reflect的使用
  • 【备考高项】模拟预测题(二)综合知识及答案详解