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

[C++]了解内置类型升级

内置类型升级

  • 1.调用模板T时,为什么可以使用T()类型的匿名对象来传参
  • 2.内置类型被升级成为类后的使用事项

1.调用模板T时,为什么可以使用T()类型的匿名对象来传参

  • 当我们在定义或声明一个函数时,如果想使用模板T类型的默认构造(例如使用string或vector的默认构造)
    可以选择如此传参
void Func(const T& val = T())
  • 第一次见这段代码,会提出一个问题:如果T是int或char等内置类型时,int()/char()的类型是否能通过编译

答案是可以

int i = 0;
int j = int();(默认构造)
int k = int(1):(非默认构造)

  • 从这里就能看出,C++的内置类型已经被升级成为了类型

2.内置类型被升级成为类后的使用事项

	int i;
	int j();
	int k(5);

  • 我们知道,当我们要创建一个实例化对象时,如果是类类型,(例如string)那么是不能采用string a();这种风格的创建,因为编译器无法判断a是对象还是函数
  • 但是我们再看int j();编译器虽然没有报错,但也没有创建j这个对象,事实上,这是一个函数声明,声明一个返回int类型且无参数的函数j
  • 对于i和k,如果上下文没有歧义,基本都是解释为初始化

http://www.kler.cn/a/409763.html

相关文章:

  • 电话机器人的最佳应用
  • GoF设计模式——结构型设计模式分析与应用
  • 【Google Cloud】Private Service Connect 托管式服务
  • webpack配置和打包性能优化
  • Vue 3 动态组件教程
  • 自然语言处理: RAG优化之Embedding模型选型重要依据:mteb/leaderboard榜
  • Qt 开发笔记
  • 提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页时存在截断的解决思路
  • 人工智能学习框架:理论与实践的结合
  • JavaScript网页设计案例:动态交互与用户体验提升
  • 音频档案批量拷贝:专业SD拷贝机解决方案
  • C 语言复习总结记录六
  • Top 10 Tools to Level Up Your Prompt Engineering Skills
  • TCP快速重传机制为啥出现重复ACK?
  • 安全加固方案
  • opencv读写文件操作
  • 谈谈微服务的常用组件
  • 面试题分析: Unity UGUI动静分离
  • Java中使用FFmpeg拉取RTSP流
  • 『 Linux 』网络层 - IP协议 (二)
  • Flink——进行数据转换时,报:Recovery is suppressed by NoRestartBackoffTimeStrategy
  • Flink Standalone集群模式安装部署
  • Spring学习笔记_49——@ResponseBody
  • Spring Boot 开发环境搭建详解
  • 【八股文】小米
  • 【漏洞复现】|百易云资产管理运营系统/mobilefront/c/2.php前台文件上传