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

devtools/2024/11/26 17:12:01/

内置类型升级

  • 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.ppmy.cn/devtools/137171.html

相关文章

Git Github Gitlab与Gitee的关系

Git是代码版本管理工具 -------项目通过Git可以切换到任意代码版本 Github和Gitee是基于Git技术构建的远程仓库网站 -------可以将你的代码仓库提交上去保存 GitHub与Gitee的区别 -------前者是国外建立,资源更丰富,后者是国内建立,免费功能更多 Gitlab和Github功能类似 …

C++结构型设计模式之桥接模式

桥接模式的意图和动机 桥接模式的意图是将抽象部分与它的实现部分分离,使它们可以独立地变化。这意味着你可以独立地修改或扩展抽象部分和实现部分,而不会相互影响。桥接模式的主要动机是通过这种分离来增强系统的灵活性和可扩展性。 桥接模式适用于解…

ES实用面试题

一、es是什么,为什么要用它? ES通常是Elasticsearch的简称,它是一个基于Lucene构建的开源搜索引擎。Elasticsearch以其分布式、高扩展性和实时数据分析能力而闻名,广泛用于全文搜索、日志分析、实时监控等多种场景。 基本特点&am…

泷羽sec-linux

基础之linux 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…

大数据和云计算在 WMS 中的应用

【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。】 在当今数字化时代,大数据和云计算技术正以前所未有的速度改变着各个行业的运作模式,仓储管理也不例外。仓库管理系统(WMS)作为仓储管理的核心工具…

【Excel】拆分多个sheet,为单一表格

Private Sub 分拆工作表() Application.ScreenUpdating True 让屏幕显示操作过程, Dim sht As Worksheet Dim MyBook As Workbook Set MyBook ActiveWorkbook For Each sht In MyBook.Sheets If sht.Visible True Then 隐藏的sheet跳过,否则会报1004无…

LeetCode—704. 二分查找(简单)

仅供个人学习使用 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3…

《硬件架构的艺术》笔记(五):低功耗设计

介绍 能量以热量形式消耗,温度升高芯片失效率也会增加,增加散热片或风扇会增加整体重量和成本,在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支,产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。…