gpt4 book ai didi

c++ - noexcept operators ->() 和 operator*() 用于迭代器?

转载 作者:行者123 更新时间:2023-11-28 06:01:28 25 4
gpt4 key购买 nike

我正在编写一个应该非常高效的迭代器,我想知道我是否可以将运算符 operator->()operator*() 声明为 noexcept 因为它们只会在底层指针上调用相同的运算符(但如果指针指向不可用的内存部分,那么程序可能会崩溃)?

最佳答案

为什么需要?您的编译器知道您的代码,如果您从不在运算符中执行操作,您就不会得到异常处理开销。

但是,如果您在这些运算符内部执行某些操作,可能会抛出异常,则语义上不能使用说明符(除非您希望程序在抛出异常时立即退出)。

我个人认为 noexcept 不会产生任何可衡量的性能提升,但最模糊的极端情况——支持它的编译器生成的后端代码不会对不支持它的代码造成性能损失。不要扔。对我来说,noexcept 更像是编译时可检查形式的语言特性 noexcept(expression) operator .比较 Bjarne's FAQ .

关于c++ - noexcept operators ->() 和 operator*() 用于迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com