gpt4 book ai didi

C++ 整数类型 : special meaning for certain values

转载 作者:太空宇宙 更新时间:2023-11-04 15:09:23 24 4
gpt4 key购买 nike

我们被警告不要在代码中使用魔数(Magic Number),这是有充分理由的,但是是否有一种好的、表达力强且类型安全的方法来巩固具有特殊含义的常量?我可以想到两种可能的方法:

方法一:

typedef int NumberOfThreads;
const NumberOfThreads automaticNumberOfThreads = 0;

方法二:

class NumberOfThreads
{
NumberOfThreads(int n) : value(n) {}
static NumberOfThreads automatic() { return NumberOfThreads(0); }
bool isAutomatic() const { return value == automatic(); }
int value;
};

我真的不想要复杂的类型,但我确实希望我的特殊值与类型紧密相关。在方法 1 中它不是,懒惰的用户可能只是硬编码赋值或与 0 进行比较。
对于不超过整数值的东西,方法 2 似乎有点繁重。

问题可以扩展到非整数类型和多个特殊值。

也许 enum 可以做些什么?

编辑:

我意识到我可以通过在我的头文件中使用 extern 来向用户隐藏值

最佳答案

我不同意你在方法 1 中所做的事情。不需要 NumberOfThreads 类型。那实际上是一个常数,“线程数”,数字是一个整数。所以在我看来这就足够了,而且更具可读性。

const int NumberOfThreads = 0;

关于C++ 整数类型 : special meaning for certain values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572002/

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