我有一些代码,用一个整数乘以一个枚举:在C++乘以一个枚举
QuantLib::Date date2 = date + 12 * QuantLib::Months;
凡QuantLib ::月被定义为:
enum TimeUnit { Days,
Weeks,
Months,
Years
};
这使我所期望的结果date2从约会一年。但是,我无法理解这是如何实现的。
我原以为这不会编译。现在我觉得我到达了一个“十二个月”的对象,然后由QuantLib :: Date'+'操作符重载,但我从来没有见过这种风格。
我来自C#背景,所以可能有些东西我不知道在这里工作。任何人都可以解释发生了什么?任何参考文件将不胜感激。
没有什么都枚举隐式转换和操作符重载奇怪。你最好检查所有参与,因为代码确实个月转换为2,虽然你可能会看到导致date2的增加为1年,但它是如何实现的可能含有一些惊喜 – AlexT
不要相信金融工程师的方式 - 他们通常很聪明家伙,但允许肮脏的技巧。我刚刚意识到,那些家伙重载运算符*为枚举TimeUnit - 好笑话 – AlexT