C++11新特性学习:auto类型推导

c++11新特性-自动类型推导 C++11中auto并不表示一种实际的数据类型,只是一个类型声明的“占位符”。使用auto声明的变量必须进行初始化,为了让编译器推导出它的实际类型,在编译时将auto占位符替换成正真的类型。但是auto并不是万能的,并不能在任意场景下推导出变量的实际类型,使用语法为auto 变量名 = 变量值;// x是浮点型double// y是整形int// z是字符型charauto nb;// error,变量必须要初始化// 语法错误, 不能修改数据类型。 阅读详情

1.auto 类型推导

在 C++11 之前的版本(C++98 和 C++ 03)中,定义变量或者声明变量之前都必须指明它的类型,比如 int、char 等;但是在一些比较灵活的语言中,比如 C#、JavaScript、PHP、Python 等,程序员在定义变量时可以不指明具体的类型,而是让编译器(或者解释器)自己去推导,这就让代码的编写更加方便。
C++11 赋予 auto 关键字新的含义,使用它来做自动类型推导。也就是说,使用了 auto 关键字以后,编译器会在编译期间自动推导出变量的类型,这样我们就不用手动指明变量的数据类型了。
auto 关键字基本的使用语法如下:

auto name = value;

name 是变量的名字,value 是变量的初始值。
注意:auto 仅仅是一个占位符,在编译器期间它会被真正的类型所替代。或者说,C++ 中的变量必须是有明确类型的,只是这个类型是由编译器自己推导出来的。

auto 类型推导的简单例子

auto n = 10;
auto f = 12.8;
auto p = &n;
auto url = "http://c.biancheng.net/cplus/";

下面我们来解释一下:
• 第 1 行中,10 是一个整数,默认是 int 类型,所以推导出变量 n 的类型是 int。
• 第 2 行中,12.8 是一个小数,默认是 double 类型,所以推导出变量 f 的类型是 double。
• 第 3 行中,&n 的结果是一个 int* 类型的指针,所以推导出变量 p 的类型是 int*。
• 第 4 行中,由双引号""包围起来的字符串是 const char* 类型,所以推导出变量 url 的类型是 const char*,也即一个常量指针。

注意事项

1.使用auto类型推导的变量必须马上初始化。
2.推导不能有二义性,例如int n=1,m=1.55;这样就是冲突的,m也必须是int类型才可以。

auto的高级用法

auto 除了可以独立使用,还可以和某些具体类型混合使用,这样 auto 表示的就是“半个”类型,而不是完整的类型。请看下面的代码:
int x = 0;
auto p1 = &x; //p1 为 int ,auto 推导为 int
auto p2 = &x; //p2 为 int
,auto 推导为 int

auto &r1 = x; //r1 为 int&,auto 推导为 int
auto r2 = r1; //r2 为 int,auto 推导为 int
下面我们来解释一下:
• 第 2 行代码中,p1 为 int* 类型,也即 auto * 为 int ,所以 auto 被推导成了 int 类型。
• 第 3 行代码中,auto 被推导为 int
类型,前边的例子也已经演示过了。
• 第 4 行代码中,r1 为 int & 类型,auto 被推导为 int 类型。
• 第 5 行代码是需要重点说明的,r1 本来是 int& 类型,但是 auto 却被推导为 int 类型,这表明当=右边的表达式是一个引用类型时,auto 会把引用抛弃,直接推导出它的原始类型。
接下来,我们再来看一下 auto 和 const 的结合:

int  x = 0;
const  auto n = x;  //n 为 const int ,auto 被推导为 int
auto f = n;      //f 为 const int,auto 被推导为 int(const 属性被抛弃)
const auto &r1 = x;  //r1 为 const int& 类型,auto 被推导为 int
auto &r2 = r1;  //r1 为 const int& 类型,auto 被推导为 const int 类型

下面我们来解释一下:
• 第 2 行代码中,n 为 const int,auto 被推导为 int。
• 第 3 行代码中,n 为 const int 类型,但是 auto 却被推导为 int 类型,这说明当=右边的表达式带有 const 属性时, auto 不会使用 const 属性,而是直接推导出 non-const 类型。
• 第 4 行代码中,auto 被推导为 int 类型,这个很容易理解,不再赘述。
• 第 5 行代码中,r1 是 const int & 类型,auto 也被推导为 const int 类型,这说明当 const 和引用结合时,auto 的推导将保留表达式的 const 类型。
最后我们来简单总结一下 auto 与 const 结合的用法:
• 当类型不为引用时,auto 的推导结果将不保留表达式的 const 属性;
• 当类型为引用时,auto 的推导结果将保留表达式的 const 属性。

auto的限制

前面介绍推导规则的时候我们说过,使用 auto 的时候必须对变量进行初始化,这是 auto 的限制之一。那么,除此以外,auto 还有哪些其它的限制呢?

1) auto 不能在函数的参数中使用。

这个应该很容易理解,我们在定义函数的时候只是对参数进行了声明,指明了参数的类型,但并没有给它赋值,只有在实际调用函数的时候才会给参数赋值;而 auto 要求必须对变量进行初始化,所以这是矛盾的。
2) auto 不能作用于类的非静态成员变量(也就是没有 static 关键字修饰的成员变量)中。
3) auto 关键字不能定义数组,比如下面的例子就是错误的:

char url[] = "http://c.biancheng.net/";
auto  str[] = url;  //arr 为数组,所以不能使用 auto

4) auto 不能作用于模板参数,请看下面的例子:

template <typename T>
class A{
//TODO:
};
int  main(){
A<int> C1;
A<auto> C2 = C1;  //错误
return 0;
}

auto的应用

  1. 使用auto定义迭代器
int main(){
    vector< vector<float> > v;
    auto i = v.begin();  //使用 auto 代替具体的类型
    return 0;
}
  1. auto用于泛型编程
class A{
public:
    static int get(void){
        return "A::get()返回值";
    }
};
template <typename T>
void func(void){
    auto val = T::get();
    cout << val << endl;
}
C++11新特性_自动类型推导_auto 在 C++11 标准中,auto关键字被赋予了全新且强大的功能,它用于自动类型推导,即编译器能够根据变量的初始化表达式自动确定其类型。 阅读详情

相关推荐

c++11新特性篇-自动类型推导(auto, decltype)

auto 是C++11引入的关键字,用于进行自动类型推导。使用 auto 可以在变量声明时省略类型,让编译器根据初始化表达式自动推导变量的类型。这使得代码更加简洁、可读性更高,并且在使用范围较大的情况下,可以提高代码的可维护性。

f593256的博客 877

Automatic Type Deduction: auto (C++11) 自动类型推导:auto关键字

Automatic Type Deduction: auto (C++11) 自动类型推导:auto关键字 1. 关键字 auto C++03及之前的标准种,auto放在变量声明之前,声明变量的存储策略。但是这个关键字常省略不写。 C++11中,auto关键字放在变量之前,作用是在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型 例如: int a = 10; auto au_a = a;//自动类型推断,au_a为int类型 cout << typeid(au_a).nam

Parker盘的博客 803

2.1 跟网型控制原理与局限性

本文深入分析了并网变流器的跟网型(GFL)控制技术及其局限性。GFL控制将变流器视为受控电流源,依赖锁相环(PLL)跟踪电网电压,在强电网下表现良好,但在弱电网中面临严峻挑战。研究发现,当电网短路比降低时,PLL动态与电网阻抗的负交互会导致系统失稳,同时GFL变流器缺乏电压支撑能力和惯量响应能力,在故障时易脱网。相比之下,构网型(GFM)控制具有电压源特性,能自主构建电网电压,更适合弱电网环境。随着新能源占比提高,GFL控制正逐渐被更具主动支撑能力的GFM控制所替代。

技术工作者 998

[C++11] auto关键字详解

为什么引入auto关键字 在一些高级语言中,比如 C#、Python 等,程序员在定义变量时可以不指明具体的类型,而是让编译器(或者解释器)自己去推导,让代码的编写更加方便。 C++11为了支持自动类型推导了,引入了auto 关键字。 auto str = "csdn"; //自动类型推断,str为 char const * auto fValue = 100.0;//自动类型推断,fValue为double auto auto_iValue = fValue;//自动类型推断,au

weixin_44901043的博客 2702

VCS2018在Ubuntu20 18安装步骤

之前在Ubuntu20上下VCS,花了好几天时间,本来想写博客避免以后重复劳动。但由于各种原因拖了一两个月,这次由于疫情原因,期末考试推迟,所以就再次在Ubuntu18上下了VCS,顺便写博客记录。 以下VCS2018安装方法适用于 Ubuntu20、Ubuntu18,亲测可用。其他Linux发行版没试过,但应该步骤差不多。 文章目录安装包安装步骤1、建立安装路径,更改权限2、运行安装器进行安装3、生成License文件4、设置环境变量5、验证License6、启动lmgrd验证软件是否安装成功dvever

s-stone的博客 3万+

Java判断地图坐标(经度,纬度)是否在多边形区域或圆形区域内

​欢迎光临我的博客查看最新文章:在地图上,可以使用经纬度确定一个位置,如上海体育场(121.449391,31.188228),如果知道了2个地点的经纬度,我们就能在地图上找到其位置及2点的距离,百度地图或高德地图提供了相应的服务;如果将多个坐标点连成多边形区域,如何判断某个坐标点是否在多边形区域内,如下工具类。

river106的博客 3944

C++11 auto类型推导

C++11 auto

hmh520i的博客 1081

西门子1500 PLC与巴鲁夫RFID实战:从硬件接线到数据读写的完整流程

本文详细介绍了西门子S7-1500 PLC与巴鲁夫RFID系统集成的完整实战流程。内容涵盖从硬件选型、接线、PROFINET网络配置,到在TIA Portal中安装GSD文件、组态设备、分配地址,再到使用标准功能块(如FB31)进行程序架构设计、实现数据读写以及错误诊断。文章重点分享了硬件连接要点、软件配置步骤、数据块管理技巧以及调试中常见问题的解决方案,为工业自动化工程师实施RFID项目提供了清晰的指导。

weixin_29161785的博客 386

深入探索C++类型推导auto/decltype的原理和应用(C++11/14)—————C++2.0第一讲

文章目录

韩江雪de 小屋 2232

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

m0_51579041的博客 1万+

4、同轴3 - RRR球面并联机构运动分析与自主移动农业水果采摘机器人设计

本文研究了同轴3-RRR球面并联机构的运动学与速度分析,采用几何与数值方法进行位置分析,并利用螺旋理论简化雅可比矩阵的推导,通过ADAMS仿真验证了结果的准确性。同时提出一种新型自主移动农业水果采摘机器人设计,具备多功能末端执行器、水果软管转移系统和配重式静态稳定性结构,旨在减少采摘损伤、提升效率。文章还探讨了该机构在机器人控制与仿真中的应用潜力,以及采摘机器人在智能化升级与多机协作方面的发展方向。

y4z5a6b7的博客 246

【C++ 11】(一)自动类型推断 - auto关键字

在C++中,自动类型推断auto的使用。

sparkiss的专栏 1638

【Bug已解决】Codex App returns 401 Missing bearer/basic authentication after login on multiple Windows la

原始报错:Codex App returns 401 Missing bearer/basic authentication after login on multiple Windows laptops场景:用户在 Windows 笔记本上登录应用成功了,但随后每个业务请求都返回 401,提示"Missing bearer/basic authentication"。登录态像是"假的"——明明登了,请求却没带任何认证信息。多台 Windows 设备都能复现。

一键难忘的博客 596

C++11新特性之auto类型推导

C++11新特性的auto关键字

Serven的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++:C++11新特性详解(1)

前言:虽然目前没有编译器能够完全实现C++11,但这并不意味着我们不需要了解,学习它。深入学习C++11,你会发现这根本就是一门新的语言,它解决了c++98中许多遗留下来的问题。早晚会有一天,C++11便会普及大部分编译器。因此,提早做些准备也是应该的。在此我想做一个关于C++11的专题,将C++11的新特性进行一一讲解,以通俗易懂的语言及例子帮助读者入门C++11。本文便是C++11新特性超详细版

linwh8的博客 4万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

c++里面的auto类型

C++中的auto关键字是C++11标准中引入的一个新特性,旨在提高C++开发人员的开发效率和可读性。本文章将介绍auto关键字的用法,单纯作为笔记来使用,相关具体特性还需查阅官方.

zcw_jszs的博客 6471

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

一、C++11新特性:auto类型推导

目录一、auto类型推导1.1、静态类型、动态类型和类型推导1.2、auto的优势①、最大优势就是在拥有初始化表达式的复杂类型变量声明时简化代码②、第二个优势则在于可以免除程序员在一些类型声明时的麻烦,或者避免一些在类型声明时的错误③、第三个优点就是其“自适应”性能够在一定程度上支持泛型的编程④、在宏定义中,避免出现性能问题1.3、auto使用时注意事项①、auto类型指示符与指针和引用之间的关系②、auto与volatile和const之间也存在着一些相互的联系③、auto可以用来声明多个变量的类型,不过

kevin的博客 2627

C++11新特性之decltype类型推导

C++新特性之decltype类型推导

Serven的博客 1万+

C++11新特性:详解auto关键字

auto是用于简化问题,简化代码提高效率的,而不应该被滥用!过分使用auto有时候反而会使得代码不明了,变得更不易读,违背了使用的初衷。尤其是对于基本类型以及在代码一些关键功能实现部分,有时候能够一眼看出类型的代码远远优于在一堆auto中追根溯源的代码(于人于己都好)。

R6bandito的博客 1639

C++11新特性:4.自动类型推导

在C++11中增加了很多新的特性,比如可以使用auto自动推导变量的类型,还能够结合decltype来表示函数的返回值。使用新的特性可以让我们写出更加简洁,更加现代的代码。

weixin_48856218的博客 1018

C++11新特性 4.auto自动类型推导、decltype

在 C++11 中,auto关键字被赋予了新的语义。在旧标准里,auto用于声明自动存储期的变量,不过使用得较少且意义不大。而在 C++11 及以后,auto主要用于自动类型推导。它允许编译器根据变量的初始化表达式自动推断出变量的类型,从而简化代码编写,尤其是在处理复杂类型时,能让代码更加简洁易读。使用数组初始化auto变量:当使用数组名初始化auto变量时,数组会退化为指针,所以auto会被推导为指针类型。例如中,t1被推导为int*类型。使用auto定义数组:使用auto。

weixin_59409001的博客 886

C++11新特性——auto的使用方法

C++11新特性——auto的使用方法 1、认识auto 在C++11新特性中,auto是个自动推导出数据类型的关键字,应用的场景非常广,举个最简单的“栗子”: int a = 10; auto b = 10; 这两个本质上是没有区别的,当整数赋值了变量b时,auto就会推导出类型,上面推出来的是int类型。 ...

m0_53184209的博客 4112

C++11:自动类型推导auto/decltype

在 C++11 中增加了很多新的特性,比如可以使用 auto 自动推导变量的类型,还能够结合 decltype 来表示函数的返回值。使用新的特性可以让我们写出更加简洁,更加现代的代码。

oorik的博客 641

C++ 11 新特性 auto、decltype 类型推导

介绍C++11新特性 类型推导:auto 和 decltype

weixin_43989195的博客 451

C++11常用新特性——自动推导类型auto

在C++中,用于查询表达式的数据类型的操作符,该操作不是实际执行该表达式。现在成了一个类型的占位符,它告诉编译器查看变量的初始化器表达式,并使用该表达式的类型来确定变量的类型。这对于避免编写冗长的类型名称,特别是涉及模板的类型名称,非常有用。表示的就是"半个"类型,而不是完整的类型,从而使得类型推导更灵活。关键字允许对变量的类型进行自动推导,它主要是基于变量的初始化表达式来工作的。关键字用于指定变量的存储期,但在C++11中,它的功能被改为类型推导。评估表达式的类型,但不实际计算表达式的值。

Tian Meng的博客 671
上一篇: C++最重要的知识点,学弟学妹现在搞起,进大厂必备!
下一篇: 一文带你弄懂Visual Studio:运行时库及MT/MTD、MD/MDD
CodeBowl
博客等级 码龄5年 7664粉丝 67原创
评论 24
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值