当前位置:  开发笔记 > 编程语言 > 正文

C++中的命名空间和运算符重载

如何解决《C++中的命名空间和运算符重载》经验,为你挑选了2个好方法。

在特定命名空间中创建库时,为该命名空间中的类提供重载操作符通常很方便.看来(至少用g ++),重载的运算符可以在库的命名空间中实现:

namespace Lib {
class A {
};

A operator+(const A&, const A&);
} // namespace Lib

或全局命名空间

namespace Lib {
class A {
};
} // namespace Lib

Lib::A operator+(const Lib::A&, const Lib::A&);

从我的测试来看,它们似乎都运行良好.这两个选项之间是否存在实际差异?两种方法都更好吗?



1> David Pierre..:

您应该在库名称空间中定义它们.无论如何,编译器将通过参数依赖查找找到它们.

无需污染全局命名空间.


使用库命名空间的另一个原因:[this post](http://stackoverflow.com/questions/5195512/namespaces-and-operator-resolution)包含使用全局命名空间不起作用的示例.

2> Ferruccio..:

由于Koenig查找,将它放入库命名空间是有效的.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有