gpt4 book ai didi

c++ - 在 C++ 中键入安全数字常量

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

假设您开始编写一个项目,某些类型是整数,即您的代码可能如下所示:

typedef int NumericType;
NumericType a = 0;
NumericType b = 100;

在您将 CountingType 更改为特殊类的过程中,出于安全原因,它没有从整数进行隐式转换。现在,您必须检查所有代码并更新使用常量的地方。我已经开始检查我的代码以将其更改为:

typedef specialType NumericType;
NumericType a = static_cast<NumericType>(0);
NumericType b = static_cast<NumericType>(100);

这样,如果我将来再次更改 NumericType,我需要更改的代码就会更少。我开始怀疑这是否是我应该开始遵循的一般规则之一,因为我应该始终使用 static_cast 常量。

每当我在 C++ 中使用格式字符串时,我就开始这样做,这样如果我更改类型,我就有机会在我的 sprintf_s 调用中收到警告。即

sprintf_s(buffer, 10, "Bob %d", static_cast<int>(bob));

是否有另一种模式来处理常量和类型?

最佳答案

我与我的小组中的其他一些开发人员进行了交谈,我喜欢的另一种解决方案是使用如下代码:

typedef int NumericType;
NumericType a = NumericType(0);
NumericType b = NumericType(100);

这样做的好处是,如果我将类型切换为 NumericType,我只需要确保它可以用 int 构造,这与让它可转换为 int 不同。也就是说,只要 specialType 具有采用 intlong 的构造函数,此代码仅在更新 typedef 时有效。

typedef specialType NumericType;
NumericType a = NumericType(0);
NumericType b = NumericType(100);

关于c++ - 在 C++ 中键入安全数字常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57012020/

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