与拥有不带任何参数的私有类成员函数并直接访问成员变量相比,拥有自由函数(在匿名命名空间中并且只能在单个源文件中访问)并将所有变量作为参数发送有什么优势?
header:
class A {
int myVariable;
void DoSomething() {
myVariable = 1;
}
};
source:
namespace {
void DoSomething2(int &a) {
a = 1;
}
}
int A::SomeFunction() {
DoSomething2(myVariable); // calling free function
DoSomething(); // calling member function
}
如果您更喜欢让它们成为成员,那么如果我首先调用一个不访问任何成员变量的函数,但该函数调用另一个函数,该怎么办?is访问会员。它们都应该是会员功能还是免费的?
看到这个问题:有效的 C++ 第 23 条 优先选择非成员非友元函数而不是成员函数 https://stackoverflow.com/questions/5989734/effective-c-item-23-prefer-non-member-non-friend-functions-to-member-functions并且C++ 成员函数与自由函数 https://stackoverflow.com/questions/967538/c-member-functions-vs-free-functions?rq=1
您应该更喜欢自由函数,因为它可以促进松散耦合。
仅当它有效时才考虑将其设为成员函数在你们班的胆量上,并且您认为它确实与您的班级息息相关。
这是本书的一个要点101 个 C++ 编码标准,它指出比成员函数更喜欢自由函数和静态函数。
尽管这可能被认为是基于意见的,但它允许保持班级规模较小,并分离关注点。
This answer https://stackoverflow.com/a/5989854/356440声明:“这条规则的原因是,通过使用成员函数,您可能会意外地过度依赖类的内部结构。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)