使用operator / for目录:好主意还是坏主意?

时间:2013-02-28 02:08:16

标签: c++ directory operator-overloading

我有一个Directory类,用于存储字符串并且有一个/运算符,因此a / b aDirectory和{{1} } b会将std::string"/"添加到b中存储的字符串中,如下所示:

a

这将Directory a("/home/joe/foo"); Directory b = a / "bar"; 存储字符串b。这实际上是可用的,还是只是不必要的幻想?

4 个答案:

答案 0 :(得分:4)

Boost Filesystem以类似的方式重载了operator /。在你走得太远之前你有没有检查过boost文件系统? http://www.boost.org/doc/libs/1_53_0/libs/filesystem/doc/index.htm

答案 1 :(得分:2)

这是一个坏主意,因为你正在改变/运算符的通用含义。

答案 2 :(得分:0)

以这种方式重载运算符是......奇怪的。我不会说它的可怕或不好,但你必须记住,在大多数情况下,operator/更像是在说“按此划分”。现在,您可以自由地将运算符重载到您想要的任何内容,但字符串的约定(可以表示目录)通常会使+之类的内容重载。

当我第一次遇到这个代码时,我感到奇怪的是你试图用其他东西划分目录。这真的令人困惑,也不太清楚。 +可能是更好的选择,或者只使用AppendCombine等明确的方法名称。

答案 3 :(得分:0)

我不认为这是一个好主意,因为它不符合常识。 在书中,它提供了运算符重载的规则: 不要使具有内置含义的运算符过载