1

我有一个Directory类,它存储一个字符串并有一个/运算符,因此a / bwhere ais aDirectorybis astd::string将添加"/"b存储在 中的字符串a,如下所示:

Directory a("/home/joe/foo");
Directory b = a / "bar";

这将b存储字符串/home/joe/foo/bar。这真的有用吗,还是只是不必要的花哨?

4

4 回答 4

4

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

于 2013-02-28T02:14:47.037 回答
2

这是一个坏主意,因为您正在更改 / 运算符的常见含义。

于 2013-02-28T02:10:43.713 回答
0

以这种方式重载运算符是……奇怪。我不会说它糟糕或糟糕,但你必须记住,在大多数情况下operator/,它更像是说“除以那个”。现在,您可以自由地将运算符重载为您想要的任何内容,但是字符串(可以表示目录)的约定通常是您会重载类似的东西+

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

于 2013-02-28T02:12:36.957 回答
0

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

于 2013-02-28T02:15:47.993 回答