简单的解决方案是:
class Number
{
public:
bool isFinite();
bool isPositive();
double value();
...
private:
double value_;
bool isFinite_;
bool isPositive_;
...
};
我担心的是效率:
来自有效的 C++:改进程序和设计的 55 种特定方法(第 3 版),作者:Scott Meyers:
即使小对象具有廉价的复制构造函数,也可能存在性能问题。一些编译器以不同的方式处理内置类型和用户定义类型,即使它们具有相同的底层表示。例如,一些编译器拒绝将只包含双精度的对象放入寄存器中,尽管他们很乐意定期将裸双精度放在那里。当这种事情发生时,最好通过引用传递这些对象,因为编译器肯定会将指针(引用的实现)放入寄存器中。
有没有办法绕过效率问题?例如一个使用一些汇编语言魔法的库?