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

每个开发者都应该了解的一些C++特性

发布时间:2019-05-29 20:58:52 所属栏目:建站 来源:机器之心编译
导读:作为一门编程说话,C++已经进化了许多。 虽然,这些改变不是一夜之间产生的。曾几许时,C++缺乏活力,导致人们不太喜好这门说话。 可是,当 C++尺度委员会抉择加速转变时,环境就差异了。 自 2011 年以来,C++已经成为一种不绝成长的动态说话,而这正是很

编程职员倾向于尽也许镌汰措施的运行时刻。因此假如某些操纵可以让编译器来做,就可以减轻运行时的承担,从而进步时刻服从。

每个开拓者都应该相识的一些C++特征

上面的代码是 constexpr 的一个常见例子。

因为我们声明 fibonacci 计较函数为 constexpr,编译器会在编译时预先计较 fib(20) 的值。以是编译竣事后,它可以把 const long long bigval = fib(20) 替代为 const long long bigval = 2432902008176640000;

必要留意的是,转达的参数是 const 值。这是声明为 constexpr 的函数很是重要的一点,转达的参数同样要是 constexpr 可能 const。不然,该函数会像平凡函数一样执行,即不会在编译时预先计较。

变量也同样可所以 constexpr。这种环境下,你应该可以猜到,这些变量同样也是编译时计较的。不然,会呈现编译错误。

风趣的是,在之后的 c++17 中,又引入了 constexpr-if 和 constexpr-lambda。

tuple

和 pair 很是相似,tuple 是一组各类数据范例的牢靠巨细值的荟萃。

每个开拓者都应该相识的一些C++特征

偶然辰,行使 std::array会比行使 tuple 越发利便。array 和平凡 C 范例的 array 很是相似,但具有 C++尺度库的一些特征。这种数据布局是 C++11 中新增的。

类模版参数揣度

名字有点长。从 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!  

假如你不认识 C++模版,那么上述特征也许对你来说不是很好领略。

智能指针

指针也也许并欠好用。

因为 C++给编程职员提供了很大的自由度,偶然这种自由也许反而会成为绊脚石。在大都环境下,都是指针在起后面浸染。

荣幸的是,C++11 引入了智能指针,它比之前的原始指针越发利便,可以通过适内地指针开释辅佐开拓者停止内存走漏,同时也提供了特另外安详机制。

一开始我想在这篇文章中具体切磋一下智能指针,但显然重要的细节很是多,值得单开一篇来写,因此近期应该会出一篇相干文章。

原文地点:

https://medium.freecodecamp.org/some-awesome-modern-c-features-that-every-developer-should-know-5e3bf6f79a3c

【本文是51CTO专栏机构“呆板之心”的原创译文,微信公家号“呆板之心( id: almosthuman2014)”】

戳这里,看该作者更多好文

(编辑:湖南网)

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

热点阅读