美文网首页C++11新特性
C++11新特性(7)-decltype修饰符

C++11新特性(7)-decltype修饰符

作者: 面向对象思考 | 来源:发表于2018-06-03 14:50 被阅读1次

功能介绍

在存在初始化代码的情况下,可以使用auto来自动决定变量的类型。还存在另外一种情况,我们希望变量的类型通过初始化代码以外的表达式推断得到。

假设有下面的结构体:

struct Point{

   int x;

   int y;

};

在其他地方,可能这样定义point类型的变量:

Point point;

同样我们也可以定义指向point的指针:

Point* p1 = nullptr;

在C++11中提供了另一种方式来决定变量的类型:decltype修饰符。利用它可以通过表达式的类型来决定变量的类型:

decltype(point)* p2 = nullptr;

这两种方式有什么不同呢?当point的类型发生变化时,p1的类型需要一起修改,p2的类型就不需要修改。

这和sizeof()的参数提倡使用变量名而不是数据类型是一样的道理。

作者观点

刘备说:勿以恶小而为之,勿以善小而不为。好的程序也应该从一点一滴的地方开始改善。


觉得本文有帮助?请分享给更多人。

关注【面向对象思考】,轻松学习每一天!

面向对象设计,面向对象编程,面向对象思考!

相关文章

  • C++11新特性(7)-decltype修饰符

    功能介绍 在存在初始化代码的情况下,可以使用auto来自动决定变量的类型。还存在另外一种情况,我们希望变量的类型通...

  • C++11的类型推导详解

    auto & decltype 关于C++11新特性,最先提到的肯定是类型推导,C++11引入了auto和decl...

  • C++11中auto和decltype

    C++11中auto和decltype auto和decltype都是C++11中引进来用于自动推断类型的关键字,...

  • C++11拾穗

    C++11新关键字 alignas:指定对齐大小 alignof:获取对齐大小 decltype auto(重新定...

  • 阿里巴巴面试题基础篇 C++11

    ● 请问C++11有哪些新特性? 参考回答: C++11 最常用的新特性如下: auto关键字:编译器可以根据初始...

  • decltype关键字

    C++11新标准学习:decltype关键字 1. decltype的意义 有时我们希望从表达式的类型推断出要定义...

  • 可怕的C++

    【C++11】新特性——引入nullprt huang_xw

  • C++雾中风景10:聊聊左值,纯右值与将亡值

    C++11的版本在类型系统上下了很大的功夫,添加了诸如auto,decltype,move等新的关键词来简化代码的...

  • C++11风格的新元素

    “C++11就像一门新的语言。” – Bjarne Stroustrup C++11标准推出了很多有用的新特性,本...

  • 模板函数返回类型的演进

    提纲 c++03: trick 方法 c++11: auto->decltype 组合 c++14: 自动推导模板...

网友评论

  • 自傷無色:当point的类型发生变化时,p1的类型需要一起修改,p2的类型就不需要修改。
    这个point结构体怎么发生类型变化呢?

本文标题:C++11新特性(7)-decltype修饰符

本文链接:https://www.haomeiwen.com/subject/wkujsftx.html