gpt4 book ai didi

c++ - 使用 C 库时 C++ 中的 Const 正确性

转载 作者:搜寻专家 更新时间:2023-10-31 01:11:59 24 4
gpt4 key购买 nike

目前我正在使用 C++ 开发一个应用程序,我希望它是正确的常量。意思是尽可能在参数上使用 const,诸如此类。然而,这个 C++ 应用程序使用了一个不经常使用 const 的 C 库。我遇到的问题是,当向 C 库中的函数发送参数时,参数不能是 const,所以我不得不进行转换。

使用 const cast 有损于我一直致力于实现的整个 const 正确性。当使用 const 不正确的 C 库时,您是否只是随波逐流而不使用 const 正确性以便轻松使用这些库?或者有没有更好的方法我没有看到?请注意,这是一个相当小的程序,因此隔离使用该库的部分并使该部分不是 const 正确并不是一个真正的选择。

最佳答案

就个人而言,我更喜欢在不正确的库边界使用强制转换。这种方法的好处是您可以让您的代码获得正确使用 const 的好处。不利的一面是,如果库修改了一个对象,即使是“暂时”,您已经放弃了 const on,您的程序可能会出错。

例如,我见过 C 库采用它们不会在逻辑上修改的 char * 参数。但是,他们的解析器可能会暂时用零替换字符串中的分隔符,以使用 strcpy 来提取它们。如果您放弃 const 以允许 C++ 函数采用 const char *,并且有人将指针传递给实际上是 const 的对象,则将分隔符“临时”替换为零将导致错误。

关于c++ - 使用 C 库时 C++ 中的 Const 正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14168122/

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