前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++11特性篇】盘点C++11中三种简化声明的方式【auto】【decltype】【nullptr】(3)

【C++11特性篇】盘点C++11中三种简化声明的方式【auto】【decltype】【nullptr】(3)

作者头像
YY的秘密代码小屋
发布2024-01-23 09:43:06
1020
发布2024-01-23 09:43:06
举报
文章被收录于专栏:C++系列C++系列
在这里插入图片描述
在这里插入图片描述

一.auto&范围for

  • 在C++98中auto是一个存储类型 的说明符,表明变量是局部自动存储类型 ,但是局部域中定义局部的变量默认就是自动存储类型,所以auto就没什么价值了。
  • C++11中废弃auto原来的用法,将其用于实现自动类型推断。这样要求必须进行显示初始化 ,让编译器将定义对象的类型设置为初始化值的类型。
  • 在C++中常与【范围for】搭配使用
代码语言:javascript
复制
int main()
{
	int i = 10;
	auto p = &i;
	auto pf = malloc;

	//auto x; 不能单独用
}
代码语言:javascript
复制
int main()
{
    vector<int> v1 = { 1,2,3,4,54 };
    for (auto e : v2)//范围for遍历
    {
        cout << e << " ";
    }
    cout << endl;
}

二.decltype——类型相关

【1】typeid()——只能看(打印)类型,但不能用

  • typeid 推出可以推出参数是什么类型,但是只能看不能用
  • typeid(pf).name()
代码语言:javascript
复制
int main()
{
    int i = 10;
    auto p = &i;
    auto pf = malloc;

    cout << typeid(p).name() << endl;
    cout << typeid(pf).name() << endl;
}

【2】decltype——推出对象的类型后:(1)再定义变量(2)或者作为模板实参

  • 关键字decltype将变量的类型声明为表达式指定的类型 有以下两种主要用法:
  1. 单纯先定义一个变量出现
  2. 作为模板实参
代码语言:javascript
复制
int main()
{
    auto pf = malloc;
    auto pf1 = pf;

    // decltype推出对象的类型,再定义变量,或者作为模板实参
    
    // 单纯先定义一个变量出现
    decltype(pf) pf2;
    //作为模板实参
    B<decltype(pf)> bb1;
    //作为模板实参
    const int x = 1;
    double y = 2.2;
    B<decltype(x* y)> bb2;
}

三.nullptr——表示空指针

  • 由于C++中NULL被定义成字面量0,因为0既能指针常量,又能表示整形常量。 这样就可能回带来一些问题,比如下图所示
代码语言:javascript
复制
int main()
{
	int* p = NULL; // int* p = 0;             NULL被隐式类型转换成0
	func(NULL); // func(0);

	return 0;
}

  • 所以出于清晰和安全的角度考虑,C++11中新增了nullptr,用于表示空指针
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.auto&范围for
  • 二.decltype——类型相关
    • 【1】typeid()——只能看(打印)类型,但不能用
      • 【2】decltype——推出对象的类型后:(1)再定义变量(2)或者作为模板实参
      • 三.nullptr——表示空指针
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com