C++primer中constexper和常量表达式、auto类型说明符、decltype类型指示符、自定义数据结构知识点及部分例题答案、以及学习心得感受

本文详细介绍了C++ Primer中的constexpr常量表达式、auto类型说明符、decltype类型指示符的使用,以及在自定义数据结构中的应用。通过实例解析了auto如何推断类型,decltype如何获取表达式类型,并讨论了它们与常量表达式的关联。此外,还探讨了类型别名、引用类型和赋值表达式在类型推断中的作用。
摘要由CSDN通过智能技术生成

1、constexpr 和常量表达式

    常量表达式是指值不会改变并且在编译过程就能得到计算结果的表达式。显然,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。
    例子:(1)const int max_files=20;                          //max_files是常量表达式
          (2)const int limit=max_files+1;                    //limit是一个常量表达式
         (3)int staff_size=27;                            //staff_size不是常量表达式   原因:尽管staff_size的初始值是个字面值常量,但由于他的数据类型只是一个普通的int而非const int,所以他不属于常量表达式。
         (4)const int sz=get_size();                   //sz不是常量表达式  原因:尽管sz本身是一个常量,但是他的具体值直到运行时才能获取到,所以也不是常量表达式。

2、声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化:

例子: constexpr int mf=20;//20是常量表达式
constexpr int limit=mf+1;//mf+1是常量表达式
注意:(1)到目前为止我们接触到的数据类型中,算术类型、引用和指针都属于字面值类型。自定义类Sale_item、IO库、string类型则不属于字面值类型,也不能定义成constexpr。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N1314N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值