c++ - 在 C++ 中重载 unsigned long
问题描述
有没有办法重载c ++中的内置unsigned long int
函数,以便在它被分配负值的情况下自动抛出错误?
解决方案
不,不可能“重载”类型。并且没有办法将负值分配给unsigned long
标准 C++ 中的错误。
也就是说,一些编译器确实提供了在检测到这种情况时发出警告的选项。-Wsign-conversion
适用于 Clang 和 GCC。需要注意的是,故意使用负值来初始化无符号整数是非常典型的。
您可以做的事情是定义一个模拟整数的类类型,但可能会在其赋值运算符重载中引发异常。然后使用该类而不是整数类型。