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

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;
}

在这里插入图片描述

相关文章:

  • blender云渲染指南2025版
  • 如何在本地测试网站运行情况
  • 面试高频算法:最长回文子串
  • OpenCV 中用于背景分割(背景建模)的一个类cv::bgsegm::BackgroundSubtractorGSOC
  • windows10 环境下通过huggingface_hub下载huggingface社区模型
  • 碰一碰发视频源码搭建的技术迭代与升级实践
  • 金融小知识
  • 【AI入门】CherryStudio入门3:结合FastMCP创建自己的MCP服务,实现哔哩视频查询
  • stable Diffusion模型结构
  • 使用 Python 与 Java 实现接入 AI 大模型的 MCP 协议:原理与实战
  • AbMole的Calcein-AM/PI细胞双染试剂盒,精准区分细胞活死状态
  • CI/CD与DevOps流程流程简述(提供思路)
  • 电商双11美妆数据分析实验总结
  • 图片处理软件2025年的最新版,免激活绿色软件!
  • 【LeetCode】高频 SQL 50题 题解
  • DeepSeek技术最新进展分析报告(2025年5月)
  • Sat2Density论文详解——卫星-地面图像生成
  • 6. HTML 锚点链接与页面导航
  • AI 大模型新浪潮:从 DeepSeek-Prover 到 Qwen3,再到 DeepSeek-R2,迈向自动推理的新时代20250507
  • 2025年链游行业DDoS与CC攻击防御全解析:高带宽时代的攻防博弈
  • 巴基斯坦空袭印度多地空军基地,巴战机进入印领空
  • 三星“七天机”质保期内屏幕漏液被要求自费维修,商家:系人为损坏
  • 毕赣新作《狂野时代》入围戛纳主竞赛单元,易烊千玺舒淇主演
  • 国家主席习近平同普京总统举行大范围会谈
  • 习近平出席俄罗斯总统举行的欢迎仪式
  • 光大华夏:近代中国私立大学遥不可及的梦想