每个开发者都应该了解的一些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 是一组各类数据范例的牢靠巨细值的荟萃。 偶然辰,行使 std::array会比行使 tuple 越发利便。array 和平凡 C 范例的 array 很是相似,但具有 C++尺度库的一些特征。这种数据布局是 C++11 中新增的。 类模版参数揣度 名字有点长。从 c++17 开始,参数揣度也合用于尺度类模版。此前,该特征只支持函数模版。 因此,
范例揣度是隐式完成的。这对 tuple 来说变得越发利便。
假如你不认识 C++模版,那么上述特征也许对你来说不是很好领略。 智能指针 指针也也许并欠好用。 因为 C++给编程职员提供了很大的自由度,偶然这种自由也许反而会成为绊脚石。在大都环境下,都是指针在起后面浸染。 荣幸的是,C++11 引入了智能指针,它比之前的原始指针越发利便,可以通过适内地指针开释辅佐开拓者停止内存走漏,同时也提供了特另外安详机制。 一开始我想在这篇文章中具体切磋一下智能指针,但显然重要的细节很是多,值得单开一篇来写,因此近期应该会出一篇相干文章。 原文地点: https://medium.freecodecamp.org/some-awesome-modern-c-features-that-every-developer-should-know-5e3bf6f79a3c 【本文是51CTO专栏机构“呆板之心”的原创译文,微信公家号“呆板之心( id: almosthuman2014)”】 戳这里,看该作者更多好文
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |