加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

不知道C++这七大特性,绝对枉为圈中人

发布时间:2019-06-07 01:40:28 所属栏目:建站 来源:读芯术
导读:作为一种计较机说话,C++经验了很多成长变革。 虽然,这些改变并不是一挥而就的。C++曾经缺乏活力与创新,因此很不受接待。 可是在C++尺度委员会抉择加快成长这个说话之后,形势产生了改变。 2011年起,C++一跃成为了具有活力、不绝演进、广受喜欢的计较机

以上代码是constexpr的常见例子之一。既然声明斐波那契数列函数为constexpr, 那么编译器就可以在编译时预运算fib(20). 以是编译之后,可以用constlong long bigval = 2432902008176640000来更换const longlong bigval = fib(20).

请留意,转达参数是一个const 值。这是被声明为constexpr的函数的一个重点——转达参数应该是constexpr或const。不然这里的函数会和平凡函数一样,也就是说编译时不举办预运算。

变量也可所以constexpr. 在这种环境下,这些变量在编译时必需可评估;不然会呈现编译错误。

风趣的是,其后在C++17中引入了constexpr-if 和constexpr-lambda.

5. Tuples元组

与pair很是相同, tuple是各类数据范例的牢靠巨细值的荟萃。

不知道C++这七大特征,绝对枉为圈中人

偶然,对比于tuple,行使 std::array更利便。array相同于带有C++尺度库的成果的plain C阵列。这个数据布局是C++11新增的。

6. 类模板参数推导

这个特征的名字还挺烦琐。从C++17开始,尺度类模板也可以举办模板参数推导。之前,模板参数推导只支持函数模板。功效就是:

  1. std::pair<std::string,int> user = {"M", 25}; // previous 
  2. std::pair user = {"M", 25}; // C++17 

这种推导是“隐性的”。这对付tuple来说就更利便了。

  1. // previous 
  2. std::tuple<std::string, std::string, int> user ("M","Chy", 25); 
  3. // deduction in action!  
  4. std::tuple user2("M", "Chy", 25); 

以上这一特征对不认识C++模板的人来说没有太大用处。

7. 智能指针

指针偶然很可怕。因为C++说话为措施员提供了很洪流平的自由,以是偶然很轻易搬起石头砸本身的脚。并且许多环境下,贫困是由指针造成的。

荣幸的是,C++11引入了智能指针,智能指针比平凡指针便捷得多。它们通过当令开释内存来辅佐措施员防备内存走漏。它们尚有助于代码到达非常安详品级。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读