我有一个Directory
类,它存储一个字符串并有一个/
运算符,因此a / b
where a
is aDirectory
和b
is astd::string
将添加"/"
和b
存储在 中的字符串a
,如下所示:
Directory a("/home/joe/foo");
Directory b = a / "bar";
这将b
存储字符串/home/joe/foo/bar
。这真的有用吗,还是只是不必要的花哨?
我有一个Directory
类,它存储一个字符串并有一个/
运算符,因此a / b
where a
is aDirectory
和b
is astd::string
将添加"/"
和b
存储在 中的字符串a
,如下所示:
Directory a("/home/joe/foo");
Directory b = a / "bar";
这将b
存储字符串/home/joe/foo/bar
。这真的有用吗,还是只是不必要的花哨?
Boost Filesystem 以类似的方式重载了 operator/。在你走得太远之前,你检查过 boost 文件系统吗? http://www.boost.org/doc/libs/1_53_0/libs/filesystem/doc/index.htm
这是一个坏主意,因为您正在更改 / 运算符的常见含义。
以这种方式重载运算符是……奇怪。我不会说它糟糕或糟糕,但你必须记住,在大多数情况下operator/
,它更像是说“除以那个”。现在,您可以自由地将运算符重载为您想要的任何内容,但是字符串(可以表示目录)的约定通常是您会重载类似的东西+
。
当我第一次遇到这段代码时,我有一种奇怪的感觉,你试图用别的东西来划分一个目录。这真的很令人困惑,也不太清楚。+
可能是更好的选择,或者只是使用明确的方法名称,如Append
or Combine
。
我认为这不是一个好主意,因为它不符合常识。在书中,它提供了运算符重载的规则:不要重载具有内置含义的运算符