我在C ++方面有一点经验。我知道如何重载加号和什么不加号,但想重载空间操作符。
例如:
MyObject obj();
result = obj - foo; // This would be treated as a normal '-' operation.
result = obj-foo; // This would invoke code which throws an assert at runtime
这将允许我执行我试图为我的团队制定的某些风格指南。
谢谢!
答案 0 :(得分:9)
C ++中没有空格操作符。在大多数情况下,空白并不重要,与
之间的解析观点没有区别a-b
和
a - b
我很高兴。
注意:在我看来,有一些极端情况(嵌套模板会让人想到)它实际上很重要,但这更像是一种语法工件,而不是作为“操作员”活跃的空白的指示。
答案 1 :(得分:6)
Bjarne Stroustrup 曾一度建议allowing overloading of whitespaces [PDF]。但看到这篇文章发表于4月1日 st ,他可能不是100%认真......
这篇文章值得一读。
修改:注意到这已经发布在评论中了......好吧。
答案 2 :(得分:3)
没有空格操作符这样的项目。一般来说,在C ++中,空格是无关紧要的,并且不会导致程序中的功能差异,因此没有什么可以超载。
您正在寻找的是C ++的静态分析工具。类似于StyleCop for C ++的东西。不幸的是,我在这个领域没有很多经验,不能推荐一个特定的程序。可能这个线程上的其他人也可以。
答案 3 :(得分:3)
抱歉,不可能。
而是查看代码格式化程序 - 每个流行的IDE都有一些(例如eclipse的checkstyle),或者您可以在版本控制系统服务器中设置预提交挂钩,检查格式化之前和之后的代码是否为相同,如果没有,它返回错误而不是允许提交代码。
答案 4 :(得分:2)
这是不可能的。空间不是运营商。如果要强制执行样式,请使用静态代码分析工具并与团队成员交谈。尝试cpplint或类似的东西。
答案 5 :(得分:2)
如果要强制执行样式指南,请获取可识别样式违规的工具或应用程序。可以做到这一点的工具是Klocwork。那里可能有更小更简单的工具。
最坏的情况,写自己的。
答案 6 :(得分:-1)