对于在类上操作的函数应该是成员函数还是非成员函数,您的规则是什么?例如,我有一个使用布尔矩阵表示迷宫的类。我正在制作一个名为isConnected的函数,它验证迷宫中的两个点是否在同一区域(即可以从A到B)。
这应该是成员还是非成员?什么是好的规则?
发布于 2009-04-03 22:14:13
何时使其成为成员函数:
何时将其设置为独立函数
发布于 2009-04-03 22:46:57
Herb Sutter说:“如果可能的话,我们想让他们成为非会员非朋友”,他比我聪明。
http://www.gotw.ca/gotw/084.htm
发布于 2009-04-03 23:35:14
好吧,这两个都有论据。
支持非成员函数:
better encapsulation
container是数组,则container.begin()无效。这使得编写在容器上工作的泛型代码变得有点笨拙。但是begin(container)可以对任何类型有效,即使是像数组这样的内置类型)。它还可以通过组合使mixin更干净,因为它不需要用户在成员之间“点”您自己来获得您想要操作的mixin对象。支持将事物作为成员函数的方法是:
,
还有..。就这样。(但这一论点不应被低估。代码的可读性很重要,如果人们发现成员版本更容易阅读,这是对其有利的一个强有力的论据。它并不能产生更好的代码。从严格的“更好的代码”的角度来看,在可能的情况下应该首选非成员。
https://stackoverflow.com/questions/715919
复制相似问题