首页 > 编程语言 >C++类型推导

C++类型推导

时间:2024-08-20 11:39:02浏览次数:10  
标签:const 推导 int auto C++ 类型 pi

C++11引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能方便地获取复杂的类型,还能简化书写,提高编码效率。

1.auto类型推导

1.1 auto关键字的新意义

在go语言中,在方法范围中声明的变量可以具有类型推导,例如:

var i = 10;    //在go中自动类型推导变量i为int型

而C++11中也拥有了类似的功能:auto类型推导,其写法如下:

auto i = 10;

下面我们看一下auto的一些基本用法:

auto x = 5;                    //OK: x是int类型
auto pi = new auto(1);         //OK: pi被推导为int*
const auto *v = &x;            //OK: v是const int*类型,u是const int类型
static auto y = 0.0;           //OK: y是double类型
auto int r;                    //error: auto不再表示存储类型指示符
auto s;                        //error: auto无法推导出s的类型

在上面的示例中:
1)字面量5是一个const int类型,变量x将被推导int类型(const被丢弃,后面说明),并被初始化为5;
2) pi的推导说明auto还可以用于new操作符,在例子中,new操作符后面的auto(1)被推导出int(1),因此pi的类型是int;
3) 由&x的类型为int
,推导出const auto中auto应该是int,于是v被推到const int,而u则被推导为const int。

标签:const,推导,int,auto,C++,类型,pi
From: https://www.cnblogs.com/ydqblogs/p/18369149

相关文章

  • C++第十一弹 -- STL之List的剖析与使用
    文章索引前言1.list的介绍2list的使用2.1list的构造函数2.2iterator的使用2.3listcapacity2.4listelementaccess2.5listmodifiers3.list的迭代器失效4.list与vector的对比总结前言本篇我们旨在探讨对于STL中list的使用,下一篇我们将会对list进行底层......
  • TypeHandler时间数据类型的转换
    说明在Java开发中,TypeHandler是MyBatis框架中的一个核心组件,用于实现数据库与Java类型之间的相互转换。它允许开发人员自定义类型处理器,以满足特定的业务需求。TypeHandler的作用是在MyBatis执行SQL查询或更新操作时,将数据库中的列值转换为Java对象,并在将Java对......
  • 【openGauss】openGauss中bytea类型的字段转换为blob类型
    【openGauss】openGauss中bytea类型的字段转换为blob类型1、查询2、修改表字段例如:表htmlsignature中字段caimg类型为bytea,现在要转换为blob1、查询转换语法:rawout(t.caimg)::text::raw::blob selectrawout(t.caimg)::text::raw::blob,t.*from htmlsignature t 2、......
  • C++面试基础系列-volatile
    系列文章目录文章目录系列文章目录C++面试基础系列-volatile1.volatile核心规则2.C与C++中volatile区别2.1.C语言中的volatile2.2.C++中的volatile2.3.原子性和顺序2.4.易失性2.5.优化2.6.使用场景2.7.C++特有的特性2.8.C++20引入的变化(如果有)3.volatile常见面试问题4......
  • ArchLinux配置OpenCV C++环境
    本文将简单介绍在ArchLinux中安装OpenCVC++库并运行一个简单的OpenCV程序的过程。参考:https://github.com/donaldssh/Install-OpenCV我的环境最新的ArchLinuxKDEPlasma6桌面环境OpenCV4.10.0clang18.1.8gcc14.2.1安装安装以下包:sudopacman-Shdf5vtk......
  • 【C++】类与对象篇一
    【C++】类与对象篇一一.面向过程和面向对象初步认识二.类的详解1.类的引入2.类的定义3.类的访问限定符及封装(面试题)4.类的作用域5.类的实例化6.类对象模型三.结构体内存对齐规则(面试题)四.this指针1.this指针的特性2.this指针的(面试题)一.面向过程和面向对象......
  • 3142:练23.4 首字母(C、C++、python)
    3142:练23.4 首字母信息学奥赛一本通-编程启蒙(C++版)在线评测系统C源码:#include<stdio.h>#include<stdlib.h>intmain(){ charb; scanf("%c",&b); if(b=='a'){ printf("apple"); } elseif(b=='b'){ printf("ba......
  • 【数据结构与算法第一章】编程基础:变量与数据类型、指针、结构体、数组与链表、程序结
    目录【数据结构与算法第一章】编程基础1.1变量与数据类型1.2指针1.3结构体1.4数组和链表1.5程序结构1.6函数中参数的传递1.7C语言中运算符的含义【数据结构与算法第一章】编程基础1.1变量与数据类型变量:    ①在C语言中,所有变量必须先声明后使用......
  • C++运算符重载
    文章目录一、运算符重载1、规定2、operator关键词的使用二、赋值运算符的重载1、功能2、使用一、运算符重载1、规定C++允许我们对类类型使用运算符,但要我们自己通过运算符重载完成类类型的运算,如果没有对应的运算符重载就会报错。运算符重载需要使用特殊关键词......
  • 【C++】看完就会--右值引用!!!
    右值引用一、什么是右值?什么是左值?二、右值引用三、右值引用的好处四、万能引用五、完美转发一、什么是右值?什么是左值?首先,当我们看到右值的时候,我们很自然的就会产生疑问?什么的右边呢?等号的右边吗?那么如果是按赋值=符号的右边来定义的话,那么,左值是不是就是=符号......