跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 给新手 C++ Developer 的 Tips 1
未分類
11 1 月 2021

给新手 C++ Developer 的 Tips 1

给新手 C++ Developer 的 Tips 1

資深大佬 : dorafmon 2

大家好,我又来安利我的视频了,因为在平时工作 /面试的过程中经常会遇到一些关于 C++的细节,而这些知识点大多散落在各种书 /博客 /github repo 里,所以我想把这些知识总结成每个 10mins 左右的视频,分享给大家,也是我自己对自己知识图谱的一个梳理。我在录这个视频的时候面对的对象人群是 junior C++ developer,想好好准备 C++知识面试,或者是想学习一些跟 C++有关的能应用在工作中的 best practice 。因为我自己在国外,所以有些时候有些中英混杂,实在不好意思。

下面是第一个视频,讲的是关于 C++ exception 的一个小知识点~

C++“博大精深”,我也只是个小学生,难免会出错,还请大家斧正。

也烦请大家 subscribe 我的 youtube 频道: https://www.youtube.com/channel/UCg4d15bORamNqf-fPz9e9aw

视频地址: B 站: https://www.bilibili.com/video/BV1jf4y1y7gc youtube: https://www.youtube.com/watch?v=T5Z2iFHpoy8

大佬有話說 (8)

  • 資深大佬 : wutiantong

    没有稿子磕磕绊绊的讲解令人难以忍受。
    另外我查了,析构函数是可以抛异常的,即使在 stack unwinding 中也不是未定义行为:

    As any other function, a destructor may terminate by throwing an exception (this usually requires it to be explicitly declared noexcept(false)) (since C++11), however if this destructor happens to be called during stack unwinding, std::terminate is called instead.
    https://en.cppreference.com/w/cpp/language/destructor

  • 主 資深大佬 : dorafmon

    @wutiantong 嗯嗯 下回我争取先写个稿子。 这个我讲了一般是会 terminate 或者是 undefined behavior,effective C++原文也是这么写的。我下回更严谨一点,fact check 一下。

  • 主 資深大佬 : dorafmon

    @wutiantong 书里的原文: “Depending on the precise conditions under
    which such pairs of simultaneously active exceptions arise, program execution either terminates or yields undefined
    behavior”, 考虑到书挺老的确实我应该更严谨一点,但是这个 point 没怎么变,还是不鼓励大家 throw 。

  • 資深大佬 : wutiantong

    @dorafmon

    是有这样的说法,但既然不是 ub 就可以在充分了解的前提下加以利用。

    我倒想考考,你能简洁地讲清楚 noexcept 应该怎么写么?

  • 主 資深大佬 : dorafmon

    @wutiantong 我做这个视频的只是想给普通的新入行 c++程序员提供一点社区内都知道的常识。所以有些时候有些特殊情况我就没有提,有些特别细节的东西我自己也会有所取舍,我觉得不鼓励大家在 destructor throw exception 其实算是业界的一个普遍看法。

    noexcept 这个问题我可能要做点研究才能完整的回答你,但是我目前的看法是不要随便乱加 noexcept,因为这个会成为你 api specification 的一部分,你的 function 以后如果要 throw 的话就意味着你要改变这个 spec,所以在你不是非常确定的情况下暂时不要加 noexcept 。

  • 資深大佬 : wutiantong

    @dorafmon

    这个知识点是没问题的,但你的论述可能是有问题的。

    我们在 C++ Core Guidelines 中可以找到关于这个知识点更清晰更正确的论述:

    https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rc-dtor-fail

  • 資深大佬 : wutiantong

    @dorafmon 你没有认识到 noexcept 这个关键词的设计意图

  • 主 資深大佬 : dorafmon

    @wutiantong 嗯嗯,受教了,我再打磨打磨自己。关于这个 noexcept,您能更详细的讲讲么?谢谢!我自己也想学习学习。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具